在FragmentTabHost中更改选项卡后,ListFragment无法单击

时间:2013-02-27 22:09:14

标签: android android-layout android-fragments

我的Android应用程序按以下方式组织:

  • 包含两个片段的FragmentTabHost(第一个标签中的FragmentA和第二个标签中的FragmentB)。
  • FragmentA有一个ListViewFragment并膨胀以下视图:

    <?xml version="1.0" encoding="utf-8"?>
    <fragment xmlns:android="http://schemas.android.com/apk/res/android"
       android:id="@+id/titles"
       android:name="br.sachetto.ondepublicar.ListViewFragment"
       android:layout_width="match_parent"
       android:layout_height="match_parent" 
       android:focusable="false"
       android:focusableInTouchMode="false"
       android:clickable="false" />
    
  • 片段B的观点非常相似。

  • 以下代码用于加载FragmentA中的视图:

    private static View view;
    
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
                             Bundle savedInstanceState) {           
    
            if (view != null) {         
                    ViewGroup parent = (ViewGroup) view.getParent();        
                    if (parent != null)             
                            parent.removeView(view);    
                    }     
                    else {  
                            view = inflater.inflate(R.layout.list_fragment, 
                                                    container, false);  
                    }
             }  
        return view;         
    }
    

一切正常,直到我从第一个标签(FragmentA)更改为第二个标签(FragmentB)。 此更改后,我的列表视图停止响应单击事件。但是,如果我向下滚动 在列表中它开始再次响应。 如果这个问题可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

如果我没弄错的话,你将一个片段膨胀到一个先前(在xml中)被定义为静态/编译时片段的片段。

这种做法是不允许的,可能导致两个碎片相互叠加。我建议你通过代码动态移动或更改所有片段。

相关问题