アクティビティのライフサイクル

アラートダイアログとダイアログ風アクティビティ

ふと、ダイアログ表示中のアクティビティのライフサイクルが気になったので調べてみた。

「ダイアログボタン」押下でAretDialogを
「ダイアログ風アクティビティボタン」押下でダイアログ風のアクティビティを
それぞれ表示する。

メインのアクティビティでは、
onPause()、onResume()それぞれの中で
TextViewをsetTexte()する。

ま、予想通りっちゅうか当たり前だけど、ダイアログの場合メインのアクティビティはアクティブなまま(onResumeメソッドのまま)で、ダイアログ風アクティビティの場合メインのアクティビティではonPauseメソッドが呼ばれる。
当然か。。。
ダイアログ表示時にonPauseメソッドを呼びたい場合、ダイアログ風アクティビティ使えってことかな。

package com.papiroidsensei.testdialog01;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends Activity {
	private TextView textView;
	private final String TAG = "今どこ?";
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        textView = (TextView)findViewById(R.id.textView1);
        textView.setText("onCreate");
        Log.d(TAG, "MainActivity onCreate");
    }
    
    @Override
    protected void onPause() {
    	super.onPause();
    	textView.setText("onPause");
        Log.d(TAG, "MainActivity onCreate");
    }
    
    @Override
    protected void onResume() {
    	super.onResume();
    	textView.setText("onResume");
        Log.d(TAG, "MainActivity onResume");
    }
    
    /**
     * ダイアログボタンのonClick
     */
    public void onDialogButton(View view) {
    	AlertDialog.Builder builder = new AlertDialog.Builder(this);
    	builder.setTitle("ダイアログ");
    	builder.setMessage("AlertDialogです。");
    	builder.setPositiveButton("OK", new OnClickListener() {

	    @Override
	    public void onClick(DialogInterface arg0, int arg1) {
	        // 今回は何もしいない
	    }

    	});
    	AlertDialog dialog = builder.create();
    	dialog.show();
    }
    
    /**
     * ダイアログ風アクティビティボタンのonClick
     */
    public void onDialogActivityButton(View view) {
    	Intent intent = new Intent(this, DialogActivity.class);
    	startActivity(intent);
    }
}
         
ページのトップへ戻る