扩展导航抽屉活动

时间:2014-03-26 11:16:47

标签: android android-fragments navigation-drawer

我创建了导航抽屉活动。一切正常,但我想将其扩展到其他活动。 https://github.com/lupajz/bc/blob/master/app/src/com/kulturnepodujatia/DashboardActivity.java这是我的导航抽屉活动。

如果我尝试打开另一项活动,例如:

public class Test extends DashboardActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_test);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.test, menu);
    return true;
}
}

我收到错误:

03-26 12:14:07.902: E/AndroidRuntime(19266): FATAL EXCEPTION: main
03-26 12:14:07.902: E/AndroidRuntime(19266): Process: com.kulturnepodujatia, PID: 19266
03-26 12:14:07.902: E/AndroidRuntime(19266): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.kulturnepodujatia/com.kulturnepodujatia.Test}: java.lang.IllegalArgumentException: No view found for id 0x7f07000b (com.kulturnepodujatia:id/frame_container) for fragment BaseFragment{64ababa0 #0 id=0x7f07000b}
03-26 12:14:07.902: E/AndroidRuntime(19266):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2215)
03-26 12:14:07.902: E/AndroidRuntime(19266):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2265)
03-26 12:14:07.902: E/AndroidRuntime(19266):    at android.app.ActivityThread.access$800(ActivityThread.java:145)
03-26 12:14:07.902: E/AndroidRuntime(19266):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1206)
03-26 12:14:07.902: E/AndroidRuntime(19266):    at android.os.Handler.dispatchMessage(Handler.java:102)
03-26 12:14:07.902: E/AndroidRuntime(19266):    at android.os.Looper.loop(Looper.java:136)
03-26 12:14:07.902: E/AndroidRuntime(19266):    at android.app.ActivityThread.main(ActivityThread.java:5081)
03-26 12:14:07.902: E/AndroidRuntime(19266):    at java.lang.reflect.Method.invoke(Native Method)
03-26 12:14:07.902: E/AndroidRuntime(19266):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
03-26 12:14:07.902: E/AndroidRuntime(19266):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607)
03-26 12:14:07.902: E/AndroidRuntime(19266): Caused by: java.lang.IllegalArgumentException: No view found for id 0x7f07000b (com.kulturnepodujatia:id/frame_container) for fragment BaseFragment{64ababa0 #0 id=0x7f07000b}
03-26 12:14:07.902: E/AndroidRuntime(19266):    at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:882)
03-26 12:14:07.902: E/AndroidRuntime(19266):    at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062)
03-26 12:14:07.902: E/AndroidRuntime(19266):    at android.app.BackStackRecord.run(BackStackRecord.java:684)
03-26 12:14:07.902: E/AndroidRuntime(19266):    at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1447)
03-26 12:14:07.902: E/AndroidRuntime(19266):    at android.app.Activity.performStart(Activity.java:5240)
03-26 12:14:07.902: E/AndroidRuntime(19266):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2178)

测试活动在布局上只有一个textivew。导航抽屉活动具有以下布局:

<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:theme="@android:style/Theme.Holo.Light">

    <!-- Framelayout pre zobrazovanie jednotlivých fragmentov -->
    <FrameLayout
        android:id="@+id/frame_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <!-- Listview ako menu pre navDrawer -->
    <ListView
        android:id="@+id/list_slidermenu"
        android:layout_width="240dp"
        android:layout_height="fill_parent"
        android:layout_gravity="start"

        android:dividerHeight="0dp"
        android:divider="@null"
        android:background="#2B2B2B"

        />
</android.support.v4.widget.DrawerLayout>

2 个答案:

答案 0 :(得分:0)

你必须提到这样的

public class Test extends DashboardActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.test, menu);
    return super.onCreateOptionMenu(Menu menu);
}
}

如果您在仪表板上提供onCreateOptionsMenu(菜单菜单)。您永远不需要提及 这里....

以下一个你必须在Manifest内部给予..

 <activity
                android:name=".Test"
                android:configChanges="keyboardHidden|screenSize|orientation"
               >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />

                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>

答案 1 :(得分:0)

删除Test活动中的setContentView。您已经在具有R.id.frame_container的Drawer Activity中设置了contentview。因此,当您覆盖onCreate时,您正在使用不同的布局设置内容视图,并且当选择Drawer itemb时,它将失败,因为您尝试在R.id.frame_container中添加片段。