【发布时间】:2014-02-05 13:58:38
【问题描述】:
我跟着Android Developer document创建了一个通知
当顶部栏显示通知时,我单击该通知并打开我的活动。在 MyActivity 的 onCreate() 中,我得到通知设置的意图,并显示一个对话框。
public class MyActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//get extras from intent from notification component
Bundle extras = getIntent().getExtras();
if(extras != null){
showDialog();
}
}
private void showDialog(){
...
//There is a "open" button on the dialog, which opens browswer
openButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//I dismiss the dialog
dismissDialog();
//Then I open the browser
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(myUrl));
startActivity(browserIntent);
}
});
}
}
在显示的对话框中有一个“打开”按钮,当单击该按钮时,浏览器将打开。这里一切正常。
如果现在按下物理后退按钮,浏览器会消失,MyActivity 会再次显示。 然而,onCreate() 被再次调用(有时),Bundle extras = getIntent().getExtras(); 再次获得相同的意图,并再次显示对话框。
如何确保在浏览器打开对话框后,按下物理后退按钮时,对话框不再显示?
【问题讨论】:
-
将标志添加到意图中。
-
定义
sometimes? (使用 startActivityForResult 检测您从浏览器返回的事实) -
@Pankaj ,我添加了标志 Intent.FLAG_ACTIVITY_CLEAR_TOP,Intent.FLAG_ACTIVITY_NEW_TASK,它没有帮助。
-
@njzk2,从浏览器回来了
标签: android android-intent android-dialog