在android中切换活动?

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)

通过使用解决我的问题的链接,我得到了这个很好的解决方案.再次感谢大家,我真的很感激.

Par*_*ani 5

我假设您不想使用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而不清除任何活动.

如需更多信息,请检查这个.

  • 我想有人不喜欢它,人们不会欣赏其他人投入时间来帮助他们. (2认同)

jee*_*eet 5

有两种方法可以实现这一点:通过应用意图过滤器清除顶部堆栈启动意图,但根据您的问题,您对这种方法不感兴趣。第二种方法是通过 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)