2012-02-18 3 views
0

앱 설치시에만 나타나는 경고 상자를 만들려고합니다. 사용자가 앱을 사용하기 전에 전화 번호를 입력해야합니다. 내 onCreate() 메서드에 경고 대화 상자가 있지만 사용자가 경고 상자 바깥을 탭하면 사라집니다. 볼 수 있듯이 alert.setFinishOnTouchOutside(true)을 추가하려고 시도했지만 오류가 발생합니다 ('경고'에 캐스트 추가). 사용자가 창 외부를 탭하는 경우 알림이 중지되지 않도록하려면 어떻게해야합니까? 감사합니다설치시 입력 프롬프트 사용자 - Android

AlertDialog.Builder alert = new AlertDialog.Builder(this); 

    alert.setTitle("Please Enter Your Phone Number"); 
    alert.setMessage("You must enter your phone number in order to use this application"); 
    alert.setFinishOnTouchOutside(true); 

    // Set an EditText view to get user input 
    final EditText input = new EditText(this); 
    alert.setView(input); 

    alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int whichButton) { 
    Editable value = input.getText(); 

    // Do something with value! 
    } 
    }); 
    alert.show(); 

답변

2

나는 앱이

설치되어이 가능하지 않은 경우에만 표시 경고 상자를 만들기 위해 노력하고있어. 설치시 제어권을 얻지 못합니다.

사용자가 앱을 사용하기 전에 전화 번호를 입력해야합니다.

그런 다음 앱의 첫 번째 실행에서 가치를 묻거나 원하는 데이터가없는 경우 (예 : 사용자가 앱의 데이터를 삭제 한 경우)

내 onCreate() 메서드에는 경고 대화 상자가 있지만 사용자가 경고 상자 바깥을 탭하면 사라집니다.

BACK 단추를 누르면 사라집니다.

당신이 볼 수 있듯이 (참) alert.setFinishOnTouchOutside를 추가하려고했습니다,하지만 난 오류가

setFinishOnTouchOutside()Activity의 방법이다 ('경고'에 캐스팅 추가)를 얻는다. AlertDialog.Builder에 대한 방법이 아닙니다.

사용자가 창 외부를 누르면 경고가 취소되지 않도록하려면 어떻게해야합니까?

에 의해 구축 된 AlertDialogsetCanceledOnTouchOutside()으로 전화하십시오. 이것은 Builder 자체에서는 사용할 수 없습니다.

제안 된 UX가 사용자에게 적대적이므로 AlertDialog을 처음 사용하지 않는 것이 좋습니다.

사용자가 앱을 다운로드하여 설치하고 열면 가장 먼저 이해할 수없는 대화 상자가 표시됩니다.

  • 어떤 전화 번호 : 그리고, 당신의 목표는 그들이 실제로 을 설명 할 앱에 아무것도 얻을 수 없다는 것입니다? (집 직장, 모바일 섹스 라인)
  • 전화 번호는 무엇에 사용됩니까?
  • 전화 번호를 변경할 수 있습니까?
  • 여러 전화 번호를 설정할 수 있습니까?
  • 그들은 왜 처음부터 귀하의 요청을 존중해야합니까? 그러한 개인 정보를 제공함으로써 얻는 것은 무엇입니까?

onResume()에서 전화 번호가 없다는 것을 감지하면 대화 상자 대신 해당 번호를 제공 할 수있는 활동을 시작하십시오. 화면을 사용하여 번호가 필요한 이유를 설명하고 문제를 더 설명하기 위해 온라인 도움말을 볼 수있게하십시오. 다시 그 활동에서 벗어나더라도 원래의 onResume()은 다시 발동 할 것이므로 더 이상 진행할 수 없습니다. 심지어 더 나은 UX는 응용 프로그램에 허용 할 수 있지만, gunpoint에서 강제로 기존 Word 문서를로드하지 않고 Microsoft Word를 열 수있는 것처럼 전화 번호가 필요한 것을 비활성화 할 수 있습니다.

+0

정확히 내가 넣어 것 눈에'setCanceledOnTouchOutside()'에서 위의 코드가하세요? 조금 더 설명해 주시겠습니까? 감사합니다 – mkyong

+0

@Alex : 글쎄, 결과에'당신이'(대화 상자를 표시하는 것 이외에)'AlertDialog'를 반환하는'Builder'를 호출하고있는'show()'를 시도 할 것입니다. 너무 늦을 수도 있습니다.이 경우'builder'에서'create()'를 호출하고,'create()'에 의해 반환 된'AlertDialog'에서'setCanceledOnTouchOutside()'를 호출 한 다음에'show()'대화 상자를 엽니 다. – CommonsWare

0

사용자가 처음으로 전화를 걸 때 휴대 전화를 입력하도록 요청한 다음 공유 환경 설정에 세부 정보를 저장할 수 있으며 다음에 사용자가 앱을 실행하면 공유 환경 설정 값을 사용할 수 있습니다 그들이 자신의 연락처 정보를 입력했는지 여부를 알기 위해, 만약 그랬다면,이 활동을 통해 다음 활동으로 넘어 가게하십시오.

link