hpi*_*que 49 android android-activity
我有3个活动.活动A导致活动B,活动B又可以返回活动A或开始活动C.但是,如果我在活动C中按回应用程序应该关闭.
总结一下:
我应该如何从活动B转到C?这段代码目前在最后一行给我一个NullPointerException:
Intent intent=new Intent(ActivityB.this, ActivityC.class);
startActivity(intent);
ActivityB.this.finish();
ActivityB.this.getParent().finish();
Run Code Online (Sandbox Code Playgroud)
如果我切换最后两行,我也会得到一个空指针.
cod*_*ser 55
我不知道这是否有效,但你可以尝试一下:
从活动A开始,使用结果B开始活动 startActivityForResult()
在活动B中,当用户触发活动C时,启动活动C.
startActivity() 马上回来,所以
设置一个结果,通知A也完成,
打电话给finish()B.
当A从B接收到该结果时,A finish()也会自行调用.
如果做不到这一点,您可以将Activity C放入自己的应用程序中,然后在启动第二个应用程序后关闭第一个应用程序(使用A和B).
PS在你前进的过程中考虑Falmarri的评论!
祝好运.
小智 34
如果要从子活动中完成父活动,
在父活动中,在触发子活动时,使用以下命令: -
startActivityForResult(intent_name,any_integer_variable);
Run Code Online (Sandbox Code Playgroud)
并以下列方式覆盖onActivityResult方法: -
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(resultCode==2){
finish();
}
}
Run Code Online (Sandbox Code Playgroud)
现在,在子活动中,以下列方式覆盖onStop和onDestroy: -
protected void onStop() {
setResult(2);
super.onStop();
}
@Override
protected void onDestroy() {
setResult(2);
super.onDestroy();
}
Run Code Online (Sandbox Code Playgroud)
请注意,我已在子活动中将值设置为2,并在父活动中检查它.如果值与我设置的值相同,那么父活动也将完成.然后,您可以使用递归方法进行进一步的活动.
TS.*_*.xy 12
您应该在父Activity中使用onActivityResult方法
假设活动A是活动B的父级.如果要在活动B中单击后退按钮以退出应用程序(也退出活动A)
在您的活动B中,onStop()或onDestroy()
你打电话
setResult(0); //any int number is fine
Run Code Online (Sandbox Code Playgroud)
这会将结果代码传递给其父活动.
您的父Actvity A,侦听onActivityResult您可以在您可以调用的方法中使用方法所需的结果代码
if(resultCode == 0) //matches the result code passed from B
{
ActivityA.this.finish()
}
Run Code Online (Sandbox Code Playgroud)
这个对我有用 :)
这些都不适合我。所以我找到了一个解决方案。帮助中明确列出了 Intent.FLAG_ACTIVITY_CLEAR_TASK 必须与 Intent.FLAG_ACTIVITY_NEW_TASK 一起使用。所以这是一个对我有用的代码。
Intent intent=new Intent(ActivityB.this, ActivityC.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
86225 次 |
| 最近记录: |