如何避免在每个Activity的onCreate中重复相同的初始化代码?

时间:2014-05-07 14:02:32

标签: android android-activity abstract-class repeat extends

我做了一个名为MyBaseActivity的抽象基础活动,扩展了Activity。然后,我为所有具体的子活动扩展MyBaseActivity。我这样做是为了不必为每个子活动设置相同的菜单。

但是,在我的所有活动onCreate()调用中,我仍然会重复以下代码。

// Custom View for ActionBar
ActionBar actionBar = getActionBar();
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
View view = View.inflate(getApplicationContext(), R.layout.actionbar_top, null);
actionBar.setCustomView(view);

有没有办法避免重复此代码?我可以把它放在MyBaseActivity吗?如果是这样,我是否需要将其发送给上下文?我该怎么做?

1 个答案:

答案 0 :(得分:4)

将其放入您的基本活动onCreate()

在子类中,当您调用super.onCreate()时,代码将被执行。

public class BaseActivity extends Activity{

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        // Custom View for ActionBar
        ActionBar actionBar = getActionBar();
        actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
        View view = View.inflate(getApplicationContext(), R.layout.actionbar_top, null);
        actionBar.setCustomView(view);
    }

}


public class SubActivity extends BaseActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
       super.onCreate(savedInstanceState); // this calls BaseActivity's onCreate()

       // at this point your actionbar custom view will have been set up

    }

}