0

我想每个人都知道在 Eclipse 中创建项目时选择“主细节流”时创建的项目。在此处输入图像描述

Theres 布局左侧,右侧和 two_pane 布局与片段和 Framelayout 作为片段容器。这工作正常。

现在我有一个带有 viewpager、片段等的“主要”活动 A,我从带有回调的片段调用活动。从该活动 AI 开始一个新的活动 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

当我用另一个框架布局替换 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;
}
}

搜索结果片段:

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>
4

1 回答 1

0

好的,这就是我发现的:

我无法将我的 Activity 的布局设置为 searchbox.xml(并在 refs.xml 中使用 two_pane.xml 将其作为别名)并将 SearchboxFragment 的布局设置为 searchbox.xml。

我认为 searchbox.xml 从未在两窗格模式下由 Activity 显示,我可以安全地将其设置在其他地方,但这是错误的。

我所做的是复制该布局并使用 searchbox_onepane.xml 和 searchbox_twopane.xml。

于 2013-02-20T13:32:17.037 回答