在活动之间使用通用导航抽屉

时间:2014-03-12 19:43:55

标签: android

我想在我的所有Navigation Drawer不是片段)中创建Activities

棘手的部分是应该是一个普通的抽屉。即列表项必须相同。 在抽屉中,当前打开的活动应突出显示为粗体和在ListView中已禁用,而其他活动应在正常文本中启用并启用。

经过许多例子,比如this,我提出了两种方法:

  1. 在每个活动中使用相同的导航抽屉 ListView并动态地将当前打开的列表项设为粗体 &安培;禁用。或者,

  2. 如上面的链接所述,使用 BaseActivity ,在那里定义DrawerLayout并在其他活动中使用它。 (问题是我不知道在BaseActivity中setContentView(layout)。在任何地方都没有显示的活动中使用布局感觉不对。

  3. 请建议

    谢谢

1 个答案:

答案 0 :(得分:0)

允许子类活动提供内容视图布局ID。

public class BaseActivity extends Activity{

       public void onCreate(Bundle b){
                super.onCreate(b);

                setContentView(getLayoutId())

                //set up drawer content here

    }



       protected abstract int getLayoutId();
}

public class AppActivity extends BaseActivity{

    public void onCreate(Bundle b){

      super.onCreate(b)

       //do not call setContentView in this subclass let the super class do that

       //set up activity specific content here
    }

    public int getLayoutId(){
        return R.layout.subactivity_layout;
    }
}

为了使其正常工作,每个活动的布局必须包含相同的DrawerLayout元素。具体而言,抽屉布局的id值和用作抽屉内容的子视图在每个文件中必须相同。由于android不支持布局文件中的继承,这意味着在每个活动的布局xml中都有重复的元素。您可以使用<merge>标记将项目中的现有布局包含到新布局文件中。