简体   繁体   English

Android onBackPressed 用于所有活动

[英]Android onBackPressed for all activities

I have an issue with my Android Studio project.我的 Android Studio 项目有问题。 In multipe activities I want to show AlertDialog after user click on back button, but now it means that I have to override onBackPressed() method seven times (in each activity).在多项活动中,我想在用户单击后退按钮后显示 AlertDialog,但现在这意味着我必须重写 onBackPressed() 方法七次(在每个活动中)。 Is it possible to do that once for all activities?是否可以为所有活动执行一次?

You can have a BaseActivity and have your other activities extend from the BaseActivity .您可以拥有一个BaseActivity并让您的其他活动从BaseActivity扩展。 In the onBackPressed() method of activities, just call super.onBackPressed()在活动的onBackPressed()方法中,调用super.onBackPressed()

class BaseActivity extend AppCompatActivity {
     @Override public void onBackPressed() {
           //your logic here
     }
 }

class MainActivity extends BaseActivity {
     @Override public void onBackPressed() {
         super.onBackPressed()
     }
}

In this way, your actual logic will remain at one place.这样,您的实际逻辑将保留在一个地方。 Keep in mind, that you have to override the onBackPressed method in each activity.请记住,您必须在每个活动中覆盖 onBackPressed 方法。

Create a single activity with onBackPressed overrided:创建一个覆盖onBackPressed的活动:

public class OnBackPressedActivity extends Activity {
    @Override
    public void onBackPressed() {
        // do stuff
    }
}

And then in your code use not extends Activity , but rather extends OnBackPressedActivity然后在您的代码中使用不extends Activity ,而是extends OnBackPressedActivity

Create abstract BaseActivity that will extends AppCompatActivity/Activity in this activity, override onBackPressed(), and create alertDialog创建抽象的BaseActivity,它将扩展该Activity中的AppCompatActivity/Activity,覆盖onBackPressed(),并创建alertDialog

Now all activity will extent this BaseActivity only.现在所有活动将仅扩展此 BaseActivity。

I won't inherit from a "base class".我不会从“基类”继承。 Programming isn't always code reuse.编程并不总是代码重用。 And if, code reusing by inheritance is an anti pattern.如果,inheritance 重用代码是一种反模式。 As you will have seven onBackPressed() methods you will have seven onCreate() and so on.由于您将有七个 onBackPressed() 方法,因此您将有七个 onCreate() 等等。 What you may do, is to create a class to have your onBackPressed logic to call from your seven onBackPressed() from every activity.您可以做的是创建一个 class 让您的 onBackPressed 逻辑从每个活动的七个 onBackPressed() 中调用。 Delegate common logic to a helper class.将通用逻辑委托给助手 class。

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

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