在Activity中出现或关闭Dialog时,将调用哪个Activity Lifecycle方法

时间:2016-05-21 04:37:30

标签: android

当Dialog出现时 - 调用onPause()方法。 当Dialog是dimiss时 - 调用onResume()方法。

但是在我的下面的例子中它没有用。请查看下面的代码并清除我的困惑。

import android.app.Activity;
import android.app.Dialog;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

public class MainActivity extends Activity {

TextView txtName;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);
    txtName= (TextView) findViewById(R.id.txtName);

    txtName.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            showCustomDialog();
        }
    });
}

public void showCustomDialog(){
// Create custom dialog object
final Dialog dialog = new Dialog(this);
// Include dialog.xml file
dialog.setContentView(R.layout.dialog);
// Set dialog title
dialog.setTitle("Custom Dialog");

// set values for custom dialog components - text, image and button
TextView text = (TextView) dialog.findViewById(R.id.textDialog);
text.setText("Custom dialog Android example.");
ImageView image = (ImageView) dialog.findViewById(R.id.imageDialog);
image.setImageResource(R.drawable.ic_launcher);

dialog.show();

Button declineButton = (Button) dialog.findViewById(R.id.declineButton);
// if decline button is clicked, close the custom dialog
declineButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // Close dialog
        dialog.dismiss();
    }
});
}
@Override
protected void onResume() {
    super.onResume();
    Log.e("MainActivity","onResume");
}

@Override
protected void onPause() {
    super.onPause();
    Log.e("MainActivity","onPause");
}
出现对话框时,不会调用

onPuase()。 当对话框解除时,不会调用onResume()。

1 个答案:

答案 0 :(得分:0)

http://www.vogella.com/tutorials/AndroidLifeCycle/article.html

该对话框与活动的生命周期无关。当活动处于这些状态时,将调用onPause和onResume,而不是在对话框处于某个状态时。 例如,如果你在Activity进入onPause时放置了dialog.dismiss(),你会看到当你进入时,你的对话框将不再存在。