相关疑难解决方法(0)

碎片中的碎片

我想知道这是否是Android API中的一个错误:

我有这样的设置:

?----?---------?
|    |         |
|  1 |    2    |
|    |?-------?|
|    ||       ||
|    ||   3   ||
?----??-------??
Run Code Online (Sandbox Code Playgroud)
  1. 是一个在右侧窗格中加载片段#2(搜索屏幕)的菜单.
  2. 是包含片段#3的搜索屏幕,片段#3是结果列表.
  3. 结果列表在几个地方使用(包括作为一个功能正常的高级片段).

此功能在手机上非常有效(其中1和2和3为ActivityFragments).

但是,当我使用此代码时:

    FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();       
    Fragment frag = new FragmentNumber2();
    if(toLoad != null) frag.setArguments(toLoad);
    transaction.replace(R.id.rightPane, frag);      
    transaction.commit();
Run Code Online (Sandbox Code Playgroud)

其中R.id.leftPaneR.id.rightPane<fragment>S IN水平线性布局.

据我所知,上面的代码删除了驻留的片段,然后用新的片段替换它.很棒......显然不会发生这种情况,因为当第二次运行此代码时会出现以下异常:

07-27 15:22:55.940: 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
Run Code Online (Sandbox Code Playgroud)

这是因为FragmentNumber3的容器已被复制,并且它不再具有唯一ID.在添加新的片段之前,初始片段没有被销毁(?)(在我看来,这意味着它还没有被 …

android android-fragments android-nested-fragment

145
推荐指数
4
解决办法
14万
查看次数

片段内的片段

我需要有关片段内部片段的帮助,实际上我在按下后退按钮时遇到问题.应用主屏幕具有按钮和按下每个按钮上考虑到与新的片段替换(和该片段包含另一个片段内),动态地添加/更换片段工作正常,通过按压按钮1片段代替,按压按钮时发生同样的情况,但是,如果我按按钮再次出现异常:

"Duplicate id 0x7f05000a, tag null, or parent id 0x7f050009 with
another fragment for com........ fragmentname"
Run Code Online (Sandbox Code Playgroud)

意味着片段或内部片段已经添加,我试图再次添加它们,任何人都知道如何使用片段内部片段和来回移动没有任何问题,感谢支持.

MainActivity,其中片段是动态添加和替换的.

public class FragmentInsideFragmentTestActivity extends Activity {

    private Button button1;
    private Button button2;
    private Button button3;
    private Button button4;


    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        button1 =(Button) this.findViewById(R.id.button1);
        button1.setOnClickListener(new View.OnClickListener() {
           public void onClick(View view) {
               onButtonClick(view);
            }
        });

        button2 =(Button) this.findViewById(R.id.button2);
        button2.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                onButtonClick(view);
            } …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-nested-fragment

123
推荐指数
7
解决办法
20万
查看次数