我试图与三个垂直面板创建布局 - 2个片段和1点的布局。 第一个片段将在选择列表,第二个片段将有不同的内容。 从第2段中选择一个列表项,第3窗格将显示详细信息。
这是我的布局文件:
activity_three_pane.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:divider="?android:attr/dividerHorizontal"
android:orientation="horizontal"
android:showDividers="middle"
tools:context=".ActivitySectionList" >
<fragment
android:id="@+id/frg_section_list"
android:name="eam.droid.pt.entholkaappiyam.FragmentSectionList"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
tools:layout="@android:layout/list_content" />
<fragment
android:id="@+id/frg_chapter_list"
android:name="eam.droid.pt.entholkaappiyam.FragmentChapterList"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
tools:layout="@android:layout/list_content" />
<FrameLayout
android:id="@+id/fl_chapter_detail"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2" />
</LinearLayout>
activity_section_list.xml:
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/frg_section_list"
android:name="eam.droid.pt.entholkaappiyam.FragmentSectionList"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
tools:context=".ActivitySectionList"
tools:layout="@android:layout/list_content" />
activity_chapter_list.xml:
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/frg_chapter_list"
android:name="eam.droid.pt.entholkaappiyam.FragmentChapterList"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
tools:context=".ActivityChapterList"
tools:layout="@android:layout/list_content" />
activity_chapter_detail.xml:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/fl_chapter_detail"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ActivityChapterDetail"
tools:ignore="MergeRootFrame" />
Java代码是这样的:
ActivitySectionList.java
public class ActivitySectionList extends FragmentActivity implements FragmentSectionList.Callbacks
FragmentSectionList.java
public class FragmentSectionList extends ListFragment
ActivityChapterList.java
public class ActivityChapterList extends FragmentActivity implements FragmentChapterList.Callbacks
FragmentChapterList.java
public class FragmentChapterList extends ListFragment
ActivityChapterDetail.java
public class ActivityChapterDetail extends FragmentActivity
FragmentChapterDetail.java
public class FragmentChapterDetail extends Fragment
但是,应用程序崩溃与膨胀异常和IllegalStateException异常。 我想在过去的两年一天,但不能找出问题的所在。 如果任何人有它的想法,请回复。
Onething我注意到的是,它可以在电话这需要各个片段的整个画面细腻。 但在平板电脑崩溃时试图在屏幕上适应三个片段。 当我调试,我才知道,FragmentChapterList.java的OnAttach被ActivityChapterList.java的onCreate之前调用。 这就是为什么,它提供了IllegaltStateException:活动必须实现片段的回调。 所以,我试图同时实现内ActivitySectionList.java片段回调。
像这样:
public class ActivitySectionList extends FragmentActivity implements FragmentSectionList.Callbacks, FragmentChapterList.Callbacks
然后正常工作的平板。 但是,不能在手机上检索章节列表。
这里是我的logcat:
02-12 14:14:55.858: E/AndroidRuntime(989): FATAL EXCEPTION: main
02-12 14:14:55.858: E/AndroidRuntime(989): java.lang.RuntimeException: Unable to start activity ComponentInfo{eam.droid.pt.entholkaappiyam/eam.droid.pt.entholkaappiyam.ActivitySectionList}: android.view.InflateException: Binary XML file line #20: Error inflating class fragment
02-12 14:14:55.858: E/AndroidRuntime(989): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
02-12 14:14:55.858: E/AndroidRuntime(989): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
02-12 14:14:55.858: E/AndroidRuntime(989): at android.app.ActivityThread.access$600(ActivityThread.java:130)
02-12 14:14:55.858: E/AndroidRuntime(989): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
02-12 14:14:55.858: E/AndroidRuntime(989): at android.os.Handler.dispatchMessage(Handler.java:99)
02-12 14:14:55.858: E/AndroidRuntime(989): at android.os.Looper.loop(Looper.java:137)
02-12 14:14:55.858: E/AndroidRuntime(989): at android.app.ActivityThread.main(ActivityThread.java:4745)
02-12 14:14:55.858: E/AndroidRuntime(989): at java.lang.reflect.Method.invokeNative(Native Method)
02-12 14:14:55.858: E/AndroidRuntime(989): at java.lang.reflect.Method.invoke(Method.java:511)
02-12 14:14:55.858: E/AndroidRuntime(989): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
02-12 14:14:55.858: E/AndroidRuntime(989): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
02-12 14:14:55.858: E/AndroidRuntime(989): at dalvik.system.NativeStart.main(Native Method)
02-12 14:14:55.858: E/AndroidRuntime(989): Caused by: android.view.InflateException: Binary XML file line #20: Error inflating class fragment
02-12 14:14:55.858: E/AndroidRuntime(989): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
02-12 14:14:55.858: E/AndroidRuntime(989): at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
02-12 14:14:55.858: E/AndroidRuntime(989): at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
02-12 14:14:55.858: E/AndroidRuntime(989): at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
02-12 14:14:55.858: E/AndroidRuntime(989): at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
02-12 14:14:55.858: E/AndroidRuntime(989): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:256)
02-12 14:14:55.858: E/AndroidRuntime(989): at android.app.Activity.setContentView(Activity.java:1867)
02-12 14:14:55.858: E/AndroidRuntime(989): at eam.droid.pt.entholkaappiyam.ActivitySectionList.onCreate(ActivitySectionList.java:20)
02-12 14:14:55.858: E/AndroidRuntime(989): at android.app.Activity.performCreate(Activity.java:5008)
02-12 14:14:55.858: E/AndroidRuntime(989): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
02-12 14:14:55.858: E/AndroidRuntime(989): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
02-12 14:14:55.858: E/AndroidRuntime(989): ... 11 more
02-12 14:14:55.858: E/AndroidRuntime(989): Caused by: java.lang.IllegalStateException: Activity must implement fragment's callbacks.
02-12 14:14:55.858: E/AndroidRuntime(989): at eam.droid.pt.entholkaappiyam.FragmentChapterList.onAttach(FragmentChapterList.java:84)
02-12 14:14:55.858: E/AndroidRuntime(989): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:867)
02-12 14:14:55.858: E/AndroidRuntime(989): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1066)
02-12 14:14:55.858: E/AndroidRuntime(989): at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1168)
02-12 14:14:55.858: E/AndroidRuntime(989): at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:280)
02-12 14:14:55.858: E/AndroidRuntime(989): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:676)
谁能告诉我在哪里mightbe的问题呢? 如果任何人遇到教程或实施例3垂直板(2和列表1点的细节)的,请点我给它。
下面是详细情况: