2017-08-09 11 views
-1

アクティビティのコールバックをチェックするために以下のコードを試しました。アクティビティの上部にダイアログが表示されるときはいつでも、アクティビティのOnPause()メソッドが呼び出されます。ダイアログが消えるとアクティビティのOnResume()がトリガされます。AlertDialogの表示後にアクティビティの一時停止メソッドが呼び出されない

驚くべきことに、それはそれはwork.Iは、私が間違っている場合は、ここに私のコードは私を修正してください

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 

    @Override 
    protected void onPause() { 
     Log.d("MainActivity", "onPause"); 
     super.onPause(); 
    } 

    @Override 
    protected void onResume() { 
     Log.d("MainActivity", "onResume"); 
     super.onResume(); 
    } 

    @Override 
    protected void onStart() { 
     super.onStart(); 
    } 

    @Override 
    protected void onStop() { 
     super.onStop(); 
    } 


    public void onClick(View view) { 
     AlertDialog.Builder builder; 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
      builder = new AlertDialog.Builder(MainActivity.this, android.R.style.Theme_Material_Dialog_Alert); 
     } else { 
      builder = new AlertDialog.Builder(MainActivity.this); 
     } 
     builder.setTitle("Delete entry") 
       .setMessage("Are you sure you want to delete this entry?") 
       .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int which) { 
         // continue with delete 
        } 
       }) 
       .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int which) { 
         // do nothing 
        } 
       }) 
       .setIcon(android.R.drawable.ic_dialog_alert) 
       .show(); 
    } 
} 
+0

を読むことができます! onCreateの '.show()'や 'onClick'クラスを使用してください。 –

+0

あなたは、そのようなコールバックを、ダイアログテーマを持つアクティビティでない限り、取得しません。 –

答えて

2

私は私の の通り、活動のコールバックを確認するには、コードの下にしようとしていますアクティビティの上にダイアログが表示されるたびに理解するアクティビティの OnPause()メソッドが呼び出す必要があります。ダイアログが消えたときアクティビティの OnResume()がトリガされます。

なし。 Documentation is bit confusing。アクティビティの上にダイアログを呼び出すと、アクティビティのonPause()は決して呼び出されません。他の方法で考えると、ダイアログは常に呼び出しアクティビティと結びついていて、そのアクティビティが実行状態ではない場合、そのダイアログがどのように表示されるのでしょうか?

実際には、アクティビティをダイアログ(ダイアログテーマ、またはフルスクリーンをカバーしていないアクティビティを使用)として呼び出すときにのみが呼び出されます。


(例えば、ダイアログなど)新しい、半透明活性が開き

onPause()

  • ドキュメントから。アクティビティがまだ部分的には表示されているがフォーカスがない限り、アクティビティは一時停止のままです。

また、あなたはすべてのあなたの `AlertDialog`を使用していませんでしたAndroid: Under what circumstances would a Dialog appearing cause onPause() to be called?

3

onPause(アンドロイドM 6.0.1

でテストしているはずの道を起こっていません)はあなたのアクティビティがアクティビティスタックの上になくなったときに呼び出されます。 A Dialogは単独ではアクティビティではないため、スタック上部の現在のアクティビティを置き換えないため、onPause()は呼び出されません。

DialogActivityとして実装した場合:(テーマがダイアログのテーマに設定されているアクティビティ)。この場合、アクティビティとして表示するダイアログが故にonPauseを(呼び出して、スタックの一番上になるように新しいアクティビティの原因になりますとき)

関連する問題