当我点击列表视图项时,我正在使用此代码执行FragmentTransaction
。
以下是代码:
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
android.support.v4.app.Fragment detail = new ProductsPurchasedFragment();
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.main_container, detail).addToBackStack("back").commit();
}
});
注意:main_container
放在MainActivity
类中,布局是我希望放置片段。
以下是我使用的XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ListView
android:id="@+id/listViewPurchases"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:scrollbarSize="3dp"
android:layout_marginBottom="50dp"
android:scrollbarStyle="outsideOverlay"
android:descendantFocusability="blocksDescendants"
android:scrollbars="vertical"
android:scrollingCache="true"
android:smoothScrollbar="true" />
</RelativeLayout>
我不知道是否有任何相关性,但这里是CustomAdapter
项目的ListView
XML文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/dispensaryAdressPurchases"
android:layout_width="300sp"
android:layout_height="wrap_content"
android:layout_alignStart="@+id/dispensaryNamePurchases"
android:layout_below="@+id/dispensaryNamePurchases"
android:layout_marginTop="3dp"
android:ems="10"
android:textColor="@color/black" />
<TextView
android:id="@+id/dispensaryNamePurchases"
android:layout_width="300sp"
android:textColor="@color/valet_green"
android:layout_marginTop="15sp"
android:layout_marginLeft="10sp"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:ems="10" />
<TextView
android:id="@+id/cityAndStatePurchases"
android:layout_width="300sp"
android:layout_height="wrap_content"
android:layout_alignStart="@+id/dispensaryAdressPurchases"
android:layout_below="@+id/dispensaryAdressPurchases"
android:layout_marginBottom="15dp"
android:layout_marginTop="3dp"
android:ems="10" />
<TextView
android:id="@+id/dispensaryIDP"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignEnd="@+id/dispensaryNamePurchases"
android:layout_marginTop="15dp"
android:visibility="invisible"/>
</RelativeLayout>
我在这里遇到的问题是,当我点击其中一个ListView
项时,它会抛出:
java.lang.IllegalArgumentException:找不到id 0x7f0800ba的视图 (com.example.dragosandrei.greenkinexdorian:id / main_container)for 片段ProductsPurchasedFragment {da5eb68#3 id = 0x7f0800ba}
列表视图放在一个标签片段中,该片段也放在片段上。 有人能告诉我我做错了什么吗?
答案 0 :(得分:0)
您需要拥有一个名为main_container
的ID的布局,才能使您的逻辑正常工作。例如,您可以在活动的布局中添加ID为FrameLayout
的{{1}}!就像这样:
在XML main_container
下方添加以下内容:
ListView
那应该在<FrameLayout
android:id="@+id/main_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/listViewPurchases" >
</FrameLayout>
内,但在RelativeLayout
之后,如果你仍然发现下面有一些困难评论!
答案 1 :(得分:0)
我解决了这个问题。我必须得到parentFragment并从父组件中获取片段管理器。
Fragment ft = getParentFragment();
FragmentTransaction fragmentTransaction = ft.getFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.main_container , new ProductsPurchasedFragment());
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();