close an activity from other activity?

2019-01-20 19:27发布

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?

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..

Does anyone know about closing an activity direcly from other activity?? thanks..

5条回答
Deceive 欺骗
2楼-- · 2019-01-20 19:55

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. Also, when the update activity launches the installation activity, it should do so with startActivityForResult(Intent, int), not with startActivity(Intent).

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent)
{
super.onActivityResult(requestCode, resultCode, intent);
finish();
}
查看更多
闹够了就滚
3楼-- · 2019-01-20 19:59
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
}
查看更多
Rolldiameter
4楼-- · 2019-01-20 20:06

What about starting both B and C forResult and send a result back to pervious activity to let A finally call finish()? Like this:

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

Sounds complicated, but maybe it can be used as a workaround?

查看更多
爱情/是我丢掉的垃圾
5楼-- · 2019-01-20 20:10
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...

查看更多
Anthone
6楼-- · 2019-01-20 20:11

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 or 2nd Activity

    `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
     }
      }`
查看更多
登录 后发表回答