Din*_*dha 3 android android-activity
在我的Android应用程序中,我有以下要求.
活动A - >活动B(转到A选项) - >活动C(转到A选项,转到B选项)
1)从活动B转到活动A我使用了onBackPressed()方法.
2)从活动C转到活动B我onBackPressed()再次使用了方法.
那些工作正常.
3)现在我想从Activity C转到Activity A(没有Intent调用).
我怎样才能做到这一点?
编辑1:
活动A是我的主要活动我不希望通过使用Intent来重启活动.我希望从活动c恢复活动A.(就像我通过使用onBackPressed从活动B那样做).
编辑2(有答案):
好,朋友们.谢谢大家在我的问题上给我你的帮助.最后我找到了一个类似于@Paresh Mayani答案的简单答案.
回答:
Intent a = new Intent(getApplicationContext(),ActivityA.class);
a.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(a);
Run Code Online (Sandbox Code Playgroud)
通过使用解决我的问题的链接,我得到了这个很好的解决方案.再次感谢大家,我真的很感激.
我假设您不想使用Intent,因为每当您使用Intent移动到活动时按Back键将移至上一个活动(活动C).在这种情况下,我建议你加入FLAG_ACTIVITY_CLEAR_TOP旗帜.它会破坏之前的所有活动,让您转到活动A.
Intent a = new Intent(this,A.class);
a.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(a);
Run Code Online (Sandbox Code Playgroud)
或者,您可以尝试使用FLAG_ACTIVITY_REORDER_TO_FRONT标志,该标志将移至活动A而不清除任何活动.
如需更多信息,请检查这个.
有两种方法可以实现这一点:通过应用意图过滤器清除顶部堆栈启动意图,但根据您的问题,您对这种方法不感兴趣。第二种方法是通过 StartActivityForResult 启动活动。
通过使用意图标志:
Intent intent = new Intent(this, A.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
第二种方式,通过使用 startActivityForResult:
在活动 B 中:
Intent intent=new Intent(B.this, C.class);
intent.startActivityForResult(intent);
Run Code Online (Sandbox Code Playgroud)
onActivityResult 方法:
protected void onActivityResult(int reqCode, int resultCode, Intent data) {
if (resultCode == Activity.RESULT_OK ) {
String res = data.getExtras().getString("result");
if (res.equals("A")) {
String msg = "RESULT: " + res;
Toast.makeText(Login2.this, msg, Toast.LENGTH_SHORT).show();
finish();
}
}
}
Run Code Online (Sandbox Code Playgroud)
在活动 C
Intent intent = new Intent();
intent.putString("result", "Hello, World");
setResult(RESULT_OK, intent);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10693 次 |
| 最近记录: |