我知道之前已经问过这个问题(另外2个我发现了类似的问题),但他们没有解决这个场景的这一方面!
这就是场景,我创建了一个类:
public class BaseActivity extends ActionBarActivity {
// Implemeted the Actionbar and navigation drawer here!
// and it containts onCreate method and setContentView
}
BaseActivity XML:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/base_nav_drawer"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
</LinearLayout>
<ListView
android:id="@+id/base_left_drawer"
android:layout_width="320dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"
android:background="#dddddd"/>
<ListView
android:id="@+id/base_right_drawer"
android:layout_width="320dp"
android:layout_height="match_parent"
android:layout_gravity="end"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"
android:background="#dddddd"/>
</android.support.v4.widget.DrawerLayout>
然后扩展了我的主要课程/活动:
public class Main extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
和这里的主要活动XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:id="@+id/stream_new_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="hi dude"/>
</LinearLayout>
所以现在我可以在我的Main活动中看到Actionbar和Navigation抽屉,但是,如果我尝试在我的Main活动上使用setContectView(R.layout.main)
来使用我为此活动特定创建的xml布局,导航抽屉将不再出现了;我猜因为主要活动上的onCreate
和setContectView
会覆盖我扩展的BaseActivity中的相同语句。对此有何解决方案?
答案 0 :(得分:1)
我希望我理解正确:您正在setContentView()
使用BaseActivity
设置抽屉,setContentView()
使用MainActivity
来完成布局的其余部分建立?
如果是这样的话:它将无法正常工作。第二次执行setContentView()
它将替换旧布局,然后就没有抽屉了。
您必须在setContentView()
MainActivity
中的setContentView()
布局中使用抽屉。
另外,不要两次使用{{1}},第一次没用。