2011-06-13 7 views
5
난 내 자신의 대화를 만들려면 다음 코드를 사용하고

: 그것은 잘 작동하지만,이 함수 내에서 사용될 때 대화는 그 자체에 사라 나타납니다안드로이드 대화 상자에서 사라 자신의

public void ShowMessageDialog(String str){ 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setMessage(str); 
    builder.setCancelable(false); 
    builder.setNeutralButton("Ok", new DialogInterface.OnClickListener() {   
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      dialog.dismiss(); 
     } 
    }); 
    AlertDialog alert = builder.create(); 
    alert.show(); 
} 

:

public void test(String str){ 
    ShowMessageDialog("About to start new activity"); 
    Intent intent = new Intent(this,PageViewer.class); 
    startActivity(intent); 
} 

새로운 활동이 생성되어 분명히 대화 상자를 제거하는 것 같습니다. 하지만 왜? 새 활동을 열기 전에 활동을 중단해서는 안됩니까?

감사합니다.

답변

5

화재가 발생하기 쉬운 의도는 대화 상자가 취소 될 때까지 기다리지 않습니다. 그러면 대화 상자가 표시된 직후에 새로운 활동이 시작됩니다. 당신은 당신이 이런 식으로 원하는 것을 달성 할 수있다 :

public void ShowMessageDialog(String str){ 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setMessage(str); 
    builder.setCancelable(false); 
    builder.setNeutralButton("Ok", new DialogInterface.OnClickListener() {   
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      dialog.dismiss(); 
      Intent intent = new Intent(this,PageViewer.class); 
      startActivity(intent); 
     } 
    }); 
    AlertDialog alert = builder.create(); 
    alert.show(); 
} 

public void test(String str){ 
    ShowMessageDialog("About to start new activity"); 
} 
+1

또한 당신은 아마 교체해야 '이'활동 또는 응용 프로그램 컨텍스트를 참조 의도 생성자,이 방법 '이'DialogInterface 인스턴스이기 때문이다. 나는 그것에 대해 잘 모르겠지만, 당신은 생각을 가지고 있다고 생각합니다. –

+0

답변 해 주셔서 대단히 감사합니다! – aarelovich

관련 문제