Intent.FLAG_ACTIVITY_CLEAR_TOP doesn't deletes the activity stack

后端 未结 10 898
遇见更好的自我
遇见更好的自我 2020-12-17 09:20

I am developing the application in which i want to close whole application on button click. I know in android we should not think about to close the application because andr

10条回答
  •  再見小時候
    2020-12-17 10:14

    Use this--

     Intent intent = new Intent(Activity3.this, FinishActivity.class);
     intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | 
     Intent.FLAG_ACTIVITY_NEW_TASK);
     intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
     startActivity(intent);
     finish();
    

    Edited--New Answer and would work perfectly..

    just taking an example...do it accordingly what your project needs--

    I am taking three Activity class A, B and C..and I have applied a close button on the view of class C Activity. If you want then by the Back button you can go to the previous Activity and when you press the close button then you would exit from apps..have a look--

    public class AActivity extends Activity {
    
      /** Called when the activity is first created. */
      @Override
       public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    
        Intent i = new Intent(this, B.class);
        startActivityForResult(i, 1);
    }
    
    @Override
    protected void onActivityResult(final int requestCode,
            final int resultCode, final Intent intent) {
        super.onActivityResult(requestCode, resultCode, intent);
    
        if (resultCode == 5) {
            finish();
        }
    }
    }
    

    Take next class activity--

       public class B extends Activity {
        /** Called when the activity is first created. */
       @Override
      public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.b);
    
        Intent i = new Intent(this, C.class);
        startActivityForResult(i, 2);
    }
    
    @Override
    protected void onActivityResult(final int requestCode,
            final int resultCode, final Intent intent) {
        super.onActivityResult(requestCode, resultCode, intent);
    
        if (resultCode == 5) {
            setResult(5);
            finish();
        }
    }
    }
    

    Take last activity--

        public class C extends Activity {
       /** Called when the activity is first created. */
       @Override
       public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.c);
    }
    
        // close button..set by xml view..you can set it by button listener.
    public void close(View v) {
        setResult(5);
        finish();
    }
    }
    

    Hopefully, it would solve your problem..cheers!

提交回复
热议问题