Man*_*nos 0 android android-layout android-fragments
我在片段中有一个ListView.当我单击列表上的项目时,我想使用替换"启动"一个新的片段.这是结果.我应该只得到BUTTON:

这是在onItemClick里面:
Fragment nextFrag= new VitaminFragment();
FragmentTransaction transaction = this.getFragmentManager().beginTransaction();
transaction.replace(vitamin_fragment.getId(), nextFrag);
transaction.addToBackStack(null);
transaction.commit();
Run Code Online (Sandbox Code Playgroud)
在VitaminFragment的onCreateView中:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Log.d("created", "vitamin_fragment_2");
return inflater.inflate(R.layout.supplement_properties_layout, container, false);
}
Run Code Online (Sandbox Code Playgroud)
和VitaminFragment XML(supplement_properties_layout)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ll"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button2"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="77dp" />
<com.astuetz.PagerSlidingTabStrip
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_alignParentBottom="true"
android:layout_height="48dip" />
<android.support.v4.view.ViewPager
android:id="@+id/supplements_properties_pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/tabs" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
以编程方式创建VitaminWiki的布局:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View result = initComponents();
.....
.....
}
private RelativeLayout initComponents() {
vitamin_fragment = new RelativeLayout(getActivity());
vitamin_fragment.setId(View.generateViewId());
RelativeLayout.LayoutParams layout_57 = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);
vitamin_fragment.setLayoutParams(layout_57);
ListView listView = new ListView(getActivity());
......
vitamin_fragment.addView(listView);
com.astuetz.PagerSlidingTabStrip p = new PagerSlidingTabStrip(getActivity());
...........
p.setLayoutParams(params);
vitamin_fragment.addView(p);
ViewPager viewPager = new ViewPager(getActivity());
.........
vitamin_fragment.addView(viewPager);
return vitamin_fragment;
}
Run Code Online (Sandbox Code Playgroud)
最后,HERE是片段附加的活动.
FragmentTransaction中的replace()方法只是从指定的容器中删除所有片段,然后调用add().因此,如果指定的容器为空,则replace()只是在当前视图的顶部添加一个片段.
您应该为您的VitaminFragment发布XML文件,但是我想说为您的VitaminFragment添加背景,你应该没事.
并且不要忘记使片段的主要布局可以点击.否则,点击按钮以外的任何内容都将通过片段,并可能单击ListView上的项目.
你的片段应该是这样的:
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white"
android:clickable="true" >
Run Code Online (Sandbox Code Playgroud)
编辑:如果您希望replace()方法工作并实际从活动中删除ListView,请确保您在用于添加第一个片段的同一容器上调用它.此外,第一个片段需要动态添加.当我说动态添加时,我的意思是使用FragmentTransaction.add()方法.
| 归档时间: |
|
| 查看次数: |
5173 次 |
| 最近记录: |