简体   繁体   English

关闭其他活动的活动?

[英]close an activity from other activity?

Does anyone know how to close an activity from other activity?? 有谁知道如何关闭其他活动的活动? for example: i have 3 activity (activity A, B, and C) and from activity C, i can close an activity A.. my activity structure is activity A -> activity B -> activity C how to close an activity A from activity C? 例如:我有3个活动(活动A,B和C),从活动C,我可以关闭活动A ..我的活动结构是活动A - >活动B - >活动C如何关闭活动A从活动C?

i was try this code : 我试过这段代码:

@Override

    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Intent goToLockScreen= new Intent(this,LockScreenForm.class);
        startActivity(goToLockScreen);
        finish();

but that code is only fot closing activity A from activity B, and can't close activity A from activity C direcly.. 但该代码只是从活动B关闭活动A,并且不能直接从活动C关闭活动A.

Does anyone know about closing an activity direcly from other activity?? 有没有人知道从其他活动直接关闭活动? thanks.. 谢谢..

try It work perfectly for me 试试它对我来说很完美

   `public class aActivity extends Activity {

    public static Activity handleToClose;

    @Override
          public void onCreate(Bundle savedInstanceState) {
    .
    .
    .
    handleToClose = this;
    }

    public void onClick(View v)
    {
   Intent i = new Intent(this, act2.class);
   startActivity(i);
     }
    }`

Now You have to finish Activity-A from Activity-B 现在你必须从Activity-B完成Activity-A

Activity-B or 2nd Activity 活动B或第二活动

    `public class act2 extends Activity {
 public void onCreate(Bundle savedInstanceState) {
      // your code here
          }

     public void onClick(View v)
     {
    aActivity.handleToClose.finish(); //this will finish aActivity (1st Activity)
     finish();//to finish current Activity
     }
      }`
First Go to parent activity by starting it
@Override
 protected void onActivityResult(int requestCode, int resultCode, Intent intent)
{
super.onActivityResult(requestCode, resultCode, intent);
switch(Code){
 case A: go to that activity and finsih() this again come back to parent activity
 case B: go to that activity and finsih() this again come back to parent activity
/////and son on
}
Intent goToLockScreen= new Intent(this,LockScreenForm.class);
goToLockScreen.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

This is a prescribed way and you should follow it.. if you want some other behaviour yo can implement it.. there are lot many questions asked on this topic.. refer other questions... 这是一种规定的方式,你应该遵循它..如果你想要一些其他行为,你可以实现它..有很多问题在这个主题上提出..参考其他问题...

What about starting both B and C forResult and send a result back to pervious activity to let A finally call finish() ? 如何启动B和C forResult并将结果发送回forResult活动让A最终调用finish() Like this: 像这样:

A startActivityForResult() -> B startActivityForResult() -> C 一个startActivityForResult() - > B startActivityForResult() - > C.
C setResult() -> B onActivityResult(){setResult()} -> C onActivityResult(){finish()} C setResult() - > B onActivityResult(){setResult()} - > C onActivityResult(){finish()}

Sounds complicated, but maybe it can be used as a workaround? 听起来很复杂,但也许它可以用作解决方法?

try this 尝试这个

If the update activity is launching another installation activity, then you may want to override void onActivityResult(int requestCode, int resultCode, Intent intent) in the update activity, providing the following implementation. 如果更新活动正在启动另一个安装活动,那么您可能希望在更新活动中覆盖void onActivityResult(int requestCode,int resultCode,Intent intent),从而提供以下实现。 Also, when the update activity launches the installation activity, it should do so with startActivityForResult(Intent, int) , not with startActivity(Intent) . 此外,当更新活动启动安装活动时,它应该使用startActivityForResult(Intent,int) ,而不是startActivity(Intent)

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent)
{
super.onActivityResult(requestCode, resultCode, intent);
finish();
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM