我想每个人都知道在eclipse中创建项目时选择“master detail flow”时创建的项目。
左侧的Theres布局,右侧和带有片段和Framelayout作为片段容器的two_pane布局。这很好用。
现在我有一个带有viewpager,片段等的'main'活动A,我用一个带回调的片段调用活动。从那个活动A我开始一个新的活动B.那个活动B的设置就像我刚才谈到的eclipse的示例活动一样。
现在我遇到了应用程序崩溃
的问题ERROR/AndroidRuntime(8105): Caused by: java.lang.IllegalArgumentException: Binary XML file line #57: Duplicate id 0x7f080024, tag null, or parent id 0x0 with another fragment for FragmentNumber3
当我用另一个framelayout替换two_pane布局中的片段时,它不会崩溃。 这个问题对于嵌套片段来说是典型的,但我这里没有嵌套片段,对吧?我有一个活动B,在那一点上,与我的活动A没有任何关系。
这里有什么问题?
编辑:这是我的活动B:
公共类SucheActivity扩展了FragmentActivity实现 SearchboxFragment.SearchboxListener {
private boolean mTwoPane;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.searchbox);
getActionBar().setDisplayHomeAsUpEnabled(true);
if (findViewById(R.id.searchresult_container) != null) {
mTwoPane = true;
}
}
}
那就是活动的two_pane布局,应该留下搜索框,搜索结果正确:
<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="16dp"
android:layout_marginRight="16dp"
android:baselineAligned="false"
android:divider="?android:attr/dividerHorizontal"
android:orientation="horizontal"
android:showDividers="middle" >
<fragment
android:id="@+id/searchbox_fragment"
android:name="com.example.layouttest.SearchboxFragment"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"/>
<FrameLayout
android:id="@+id/searchresult_container"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="3" />
</LinearLayout>
继承SearchboxFragment类:
public class SearchboxFragment extends Fragment {
SearchboxListener mCallback;
View v;
public interface SearchboxListener {
public void onSearchStarted();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
v = inflater.inflate(R.layout.searchbox, container, false);
return v;
}
}
searchresultfragment:
public class SearchResultFragment extends Fragment {
public SearchResultFragment() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.searchresult, container, false);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
}
}
res / values-large中的refs.xml:
<resources>
<item name="searchbox" type="layout">@layout/haussuche_twopane</item>
</resources>
答案 0 :(得分:0)
好的,这就是我发现的:
我无法将Activity的布局设置为searchbox.xml(并在refs.xml中使用two_pane.xml将其别名)并将SearchboxFragment的布局设置为searchbox.xml。
我认为在双窗格模式下,Activity从未显示过searchbox.xml,我可以安全地将其设置在别处,但那是错误的。
我所做的是复制该布局并使用searchbox_onepane.xml和searchbox_twopane.xml。