我正在为Android制作应用,我需要一些帮助。我有三项活动 A , B & C 即可。当我在 A 并开始 B 时,我不想完成() A ,因为我希望该选项可以返回。但如果我从 B 开始 C ,我想完成 A 和 B 。我已经看到了一些使用startActivityForResult的例子,但我从未得到过它。任何人都有一些简单的样本来解释,所以我可以在我的代码中使用它?
提前致谢!
答案 0 :(得分:0)
Intent intent = new Intent( this, C.class );
intent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP );
startActivity( intent );
使用该标志清除活动堆栈,因此当您按下C上的后退按钮时,您将移至主屏幕
答案 1 :(得分:0)
第一部分 当你将表格B移动到C时,你想要完成A和B. 为了这 来自A的StartActivityforResult以及当你想从B移动到C完成B时 它会自动触发A的onActivityResult,在那里你可以启动活动C
这是StartActivityforResult
的示例http://saiful103a.wordpress.com/2011/03/19/android-startactivity-and-startactivityforresult/
答案 2 :(得分:0)
我有三个意图A,B&下进行。
为了清楚起见,我认为你的意思是Activity
s(你不能“进入”Intent
)。
当我在A并且开始B时,我不想完成()A因为我想要选择回去。但如果我从B开始C,我想完成A和B。
您要做的是从startActivityForResult(new Intent(this, C.class), requestCode)
致电Activity B
。然后在Activity B
中,您覆盖onActivityResult()
和finish()
B(因此,从背信息中弹出B
)或您什么都不做(因此,保留在B
)。
以下是您需要做的事情:
在班级中定义public static final
请求代码(这被认为是一种良好做法)。您将使用此代码来区分对startActivityForResult()
的不同调用。
public static final int C_START_CODE = 0;
来自Activity B
,请致电
startActivityForRequest(C.class,C_START_CODE);
然后,通过覆盖B
按如下方式抓取onActivityResult()
中的结果,
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch(requestCode) {
case C_START_CODE:
if (resultCode == RESULT_OK) {
// Add code here as necessary before finishing B
// and backing out of the Activity to A.
finish();
}
default:
break;
}
}
最后,当您决定完成Activity C
时,请务必区分这两种情况:
如果您想完成Activity B
AND Activity C
,请致电
setResult(RESULT_OK);
finish();
如果您只想完成Activity C
,请致电
setResult(RESULT_CANCELED);
finish();