我有DialogFragment
,其中包含DatePickerDialog
。每当我设置日期时,都会启动一个新活动。当我按回它时,它会回到相同的活动。为什么活动没有完成?
在活动中,我按以下方法启动对话框:
@Override
public boolean onOptionsItemSelected(MenuItem item){
switch(item.getItemId()){
case R.id.calendar:
new ViewCalendar().show(getFragmentManager(), "Calendar");
return true;
}
return false;
}
我在片段中有以下内容:
@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);
}
编辑:
我将更多地描述这个问题。
我的活动A带有一个启动DatePickerDialog
的按钮。我选择了一个日期,并且应该发生以下情况:
现在发生的事情是:
一堆活动现在是A - A,这就是为什么如果我按回它会回到旧实例。
答案 0 :(得分:2)
实际上你的Back堆栈不清楚,这就是你以前的活动在开启时打开的原因 背压。如此清理你的Back堆栈,它将完美地工作。
应用此代码:
@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();
}
答案 1 :(得分:0)
使用getActivity()。this.finish();而不是getActivity()。finish();
答案 2 :(得分:0)
您应首先启动意图,然后完成当前活动。
@Override
public void onDateSet(DatePicker view, int y, int m, int d) {
c.set(y, m, d);
Intent intent = new Intent(getActivity(), Calendar.class);
startActivity(intent);
getActivity().finish();
}