Android扩展MainActivity

时间:2018-08-31 18:03:22

标签: java android

我有一个MainActivity类,该类具有一些菜单代码,其他类可以通过在每个类上扩展MainActivity来继承这些菜单代码,我的问题是,如果我在MainActivity的onCreate上以及在我的另一个中有一个敬酒消息(例如)类(例如:Act_02)我扩展了MainActivity,但不希望在Main_02(扩展MainActivity)上执行Toast(来自MainActivity),如何在不删除扩展MainActivity的情况下实现这一目标?

4 个答案:

答案 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
    }
}