gpt4 book ai didi

java - Android 的 onBackPressed() 方法如何在没有在 MainActivity 中显式调用的情况下被调用?

转载 作者:行者123 更新时间:2023-12-01 21:22:12 40 4
gpt4 key购买 nike

调用 onBackPressed() 方法时,我无需在 onCreate() 方法中编写 onBackPressed(); 。我知道该方法有效,因为当我将其注释掉时,它的效果将被删除(即从 MainActivity 退出程序,即使调用其他 Activity )。

另外,如果我在 MainActivity 中输入 onBackPressed(); ,那么它将不起作用。我真的很困惑为什么 onBackPressed() 方法无需我调用该方法即可工作。抱歉,如果我没有正确地表达问题,我希望我做到了!提前致谢!!

public class MainActivity extends ActionBarActivity{

private Button button;
private Button button2;
private ImageView im;
private ImageView im2;
private boolean doubleBackToExitPressedOnce = false;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);

}
@Override
public void onBackPressed(){
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}

public void changeColor() {
button = (Button) findViewById(R.id.button);
im = (ImageView) findViewById(R.id.imageView2);

button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
im.setBackgroundColor(Color.rgb(255,255,255));
}
});
}
}

最佳答案

看到那个小@Override方法声明上方的注释?这是跟踪从父类(super class)继承的方法的便捷方法。这意味着MainActivity的父类(super class),Activity ,还有一个名为 OnBackPressed() 的方法.

现在,根据面向对象编程设计,所有 Activity 所共有的行为和属性在 Activity 中实现(或至少定义)。类(class)。由于您可以在任何 Activity 中按后退按钮,因此该方法抽象Activity类(class)。 Android 操作系统会为您处理调用此方法,因此您不必每次按下后退按钮时都亲自执行此操作。这不是很好吗?所以本质上,你可以让两个类继承 onBackPressed()来自Activity ,但让他们执行不同的代码。这称为 polymorphism .

有关继承的更多信息 here .

关于java - Android 的 onBackPressed() 方法如何在没有在 MainActivity 中显式调用的情况下被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38927637/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com