如何在每个屏幕上禁用android后退按钮?



我们需要为每个屏幕重写onBackPressed()方法吗?我看不出还有什么别的办法。如果有更简单的方法,请告诉我。

为所有的activity创建一个超类,例如

class BaseActivity extends AppCompatActivity {
@Override
void onBackPressed() {  }
}

,然后让你的所有活动继承这个类

class MyActivity1 extends BaseActivity { ... }
class MyActivity2 extends BaseActivity { ... }
class MyActivity3 extends BaseActivity { ... }

现在你所有的活动都不会对任何新闻事件做出反应!

创建一个BaseActivity并用所需的逻辑覆盖onBackPressed()方法并在所有Activity

中扩展BaseActivity
abstract class BaseActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
override fun onBackPressed() {
//super.onBackPressed()
}
}

扩展这个BaseActivity而不是AppCompatActivity

class MainActivity : BaseActivity() {
//Your code
}

如果你想手动处理后退按钮的一些活动,那么只需覆盖它为那些活动。

如果您使用的是FragmentActivityAppCompatActivity,您可以使用OnBackPressedDispatcher来控制调度系统的回压

public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
@Override
public void onActivityCreated(@NonNull Activity activity,
@Nullable Bundle savedInstanceState) {
if (activity instanceof FragmentActivity) {
((FragmentActivity) activity).getOnBackPressedDispatcher()
.addCallback(new OnBackPressedCallback(true) {
@Override
public void handleOnBackPressed() {
// nothing to do
}
});
}
}
@Override
public void onActivityStarted(@NonNull Activity activity) {
}
@Override
public void onActivityResumed(@NonNull Activity activity) {
}
@Override
public void onActivityPaused(@NonNull Activity activity) {
}
@Override
public void onActivityStopped(@NonNull Activity activity) {
}
@Override
public void onActivitySaveInstanceState(@NonNull Activity activity,
@NonNull Bundle outState) {
}
@Override
public void onActivityDestroyed(@NonNull Activity activity) {
}
});
}
}

AndroidManifest.xml:

<application 
android:name=".App"
...
/>

最新更新