我有一个包含 DatePickerDialog
的 DialogFragment
。每当我设置日期时,一项新 Activity 就会开始。当我按回去时,它会返回到相同的 Activity 。为什么 Activity 没有完成?
在 Activity 中,我使用以下方法启动对话框:
@Override
public boolean onOptionsItemSelected(MenuItem item){
switch(item.getItemId()){
case R.id.calendar:
new ViewCalendar().show(getFragmentManager(), "Calendar");
return true;
}
return false;
}
我在 fragment 中有以下内容:
@Override
public void onDateSet(DatePicker view, int y, int m, int d) {
c.set(y, m, d);
Intent intent = new Intent(getActivity(), Calendar.class);
getActivity().finish();
startActivity(intent);
}
编辑:
我将对问题进行更多描述。
我有一个 Activity A,它带有一个启动 DatePickerDialog
的按钮。我选择一个日期,应该会发生以下情况:
- Activity A 完成。
- 已创建 Activity A 的新实例。
现在发生的事情是:
- Activity A 停留在后台。
- 已创建 Activity A 的新实例。
Activity 堆栈现在是 A - A,这就是为什么如果我按回它会返回到旧实例。
最佳答案
实际上你的Back stack并不清楚,这就是你之前的 Activity 在打开时打开的原因 向后按。所以正确地清除你的后退堆栈,它会完美地工作。
应用此代码:
@Override
public void onDateSet(DatePicker view, int y, int m, int d) {
c.set(y, m, d);
Intent intent = new Intent(getActivity(), Calendar.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
getActivity().finish();
}
关于android - Activity 未完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21426082/