Android Overriding onBackPressed()

匿名 (未验证) 提交于 2019-12-03 01:06:02

问题:

Is it possible to override onBackPressed() for only one activity ?

On back button click I want to call a dialog on a specific Activity, but in all other activities i want it to work as it worked before (going to previous activities) . . .

Thanks For your anwsers in advance.

EDITED

Thank you everyone for your anwsers, I already had everything like you told me, but my problem was that when i was clicking back button on another Activity, I was going to my previous Activity (The one where i had back button Overriden) and i thought that it wasn't working, i thought it was overriding onBackPressed() in whole Application, now i got it :D

回答1:

Yes. Only override it in that one Activity with

@Override public void onBackPressed() {      // code here to show dialog      super.onBackPressed();  // optional depending on your needs } 

don't put this code in any other Activity



回答2:

Override the onBackPressed() method as per the example by codeMagic, and remove the call to super.onBackPressed(); if you do not want the default action (finishing the current activity) to be executed.



回答3:

You may just call the onBackPressed()and if you want some activity to display after the back button you have mention the

Intent intent = new Intent(ResetPinActivity.this, MenuActivity.class);     startActivity(intent);     finish(); 

that worked for me.



回答4:

Just call the onBackPressed() method in the activity you want to show the dialog and inside it show your dialog.



回答5:

Best and most generic way to control the music is to create a mother Activity in which you override startActivity(Intent intent) - in it you put shouldPlay=true, and onBackPressed() - in it you put shouldPlay = true. onStop - in it you put a conditional mediaPlayer.stop with shouldPlay as condition

Then, just extend the mother activity to all other activities, and no code duplicating is needed.



回答6:

At first you must consider that if your activity which I called A extends another activity (B) and in both of

them you want to use onbackpressed function then every code you have in B runs in A too. So if you want to separate these you should separate them. It means that A should not extend B , then you can have onbackpressed separately for each of them.



回答7:

Try This Its working

  @Override public void onBackPressed(){         super.onBackPressed();          Intent i=new Intent(Intent.ACTION_MAIN);         i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);         i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);         finish(); } 


回答8:

Just use the following code with initializing a field

private int count = 0;     @Override public void onBackPressed() {     count++;     if (count >=1) {         /* If count is greater than 1 ,you can either move to the next          activity or just quit. */         Intent intent = new Intent(ResetActivity.this, LoginActivity.class);         startActivity(intent);         finish();         overridePendingTransition         (R.anim.push_left_in, R.anim.push_left_out);         /* Quitting */         finishAffinity();     } else {         Toast.makeText(this, "Press back again to Leave!", Toast.LENGTH_SHORT).show();          // resetting the counter in 2s         Handler handler = new Handler();         handler.postDelayed(new Runnable() {             @Override             public void run() {                 count = 0;             }         }, 2000);     }     super.onBackPressed(); } 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!