我有一个MainActivity类,该类具有一些菜单代码,其他类可以通过在每个类上扩展MainActivity来继承这些菜单代码,我的问题是,如果我在MainActivity的onCreate上以及在我的另一个中有一个敬酒消息(例如)类(例如:Act_02)我扩展了MainActivity,但不希望在Main_02(扩展MainActivity)上执行Toast(来自MainActivity),如何在不删除扩展MainActivity的情况下实现这一目标?
答案 0 :(得分:1)
如果可以更改MainActivity
的代码,则可以添加受保护的布尔属性showToastMessage
并将其设置为true(这是默认值)。
proteted boolean showToastMessage = true;
然后,在onCreate()中,将吐司线包裹在if中:
if(showToastMessage){
<put the toast line here>
}
在您不希望显示敬酒的类中,您将构造函数中的showToastMessage
设置为false。
public MyNewClass extends MainActivity{
showToastMessage = false;
}
扩展MainActivity的其他类的标志将默认设置为true
。
所有类都可以调用super.onCreate()
以便按预期进行任何超级初始化。
答案 1 :(得分:0)
考虑添加一些BaseActivity
,然后让MainActivity
和其他扩展。
而您可以仅实现方法onCreate()
而无需调用super.onCreate()
...,其中super
始终指的是正在扩展的类。
答案 2 :(得分:0)
您可以将显示吐司的代码放在MainActivity
函数中,并在Act_02
中覆盖此函数。
public class MainActivity {
public void onCreate() {
super.onCreate();
displayInformation();
}
public void displayInformation() {
// your Toast
Toast.makeText(...);
}
}
public class Act_02 extends MainActivity {
@Override
public void displayInformation() {
// display something else
}
}
答案 3 :(得分:0)
如果您不想在子活动中更改onCreate
方法的顺序,请执行以下操作
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);// I always want this in first line of onCreate
showToast("Hello World!!");
}
public void showToast(String message){
Toast.makeText(this,message,Toast.LENGTH_LONG).show();
}
}
Activity2扩展了MainActivity
public class Activity2 extends MainActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// showToastMessage = false; // want to avoid here
super.onCreate(savedInstanceState);// I always want this in first line of onCreate
}
public void showToast(String message) {
// do nothing
}
}