【发布时间】:2014-07-28 22:01:39
【问题描述】:
我有一个 ViewPager,我可以在其中查看我创建的 4 个不同的选项卡(它们是片段)。在我的一个片段中,我想要一个按钮,当我单击该页面上的按钮后,该按钮将用另一个片段替换该视图。现在我不想滑动到另一个选项卡,我只想在按下该按钮时替换当前片段的视图。这是我的尝试,但我不知道为什么当我点击我的按钮时,什么也没有发生。如果有人可以帮助我,那就太好了。谢谢!
这是我调用来创建视图和我想要按下的按钮的片段。
ManualSelection.java
public class ManualSelection extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View rootView = inflater.inflate(R.layout.activity_manual_selection, container, false);
intent = new Intent(getActivity(), ManualSelectionListView.class);
return rootView;
}
public void onActivityCreated (Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Button listViewGenerated = (Button) getActivity().findViewById(R.id.manual_generate);
listViewGenerated.setOnClickListener(new View.OnClickListener() {
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
@Override
public void onClick(View v) {
FragmentManager fm = getActivity().getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.listView_manual, new ManualSelectionListView());
ft.commit();
}
});
}
}
这是我要创建的片段
ManualSelectionListView.java
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public class ManualSelectionListView extends Fragment {
static final String[] MOBILE_OS =
new String[] { "Android", "iOS", "WindowsMobile", "Blackberry"};
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View rootView = inflater.inflate(R.layout.listview, container, false);
ListView lv = (ListView)rootView.findViewById(R.id.listview);
lv.setAdapter(new MobileArrayAdapter(getActivity(),MOBILE_OS));
return rootView;
}
}
这是我的 XML 文件:
activity_manual_selection.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.ecs160.homestay.ManualSelection"
android:id="@+id/fragmentTest">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Generate"
android:id="@+id/manual_generate"
android:layout_centerHorizontal="true"
android:onClick="generateListView"/>
这是一个名为 listview.xml 的 XML 文件,其中包含 R.id.listView_manual
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/listView_manual">
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/listview"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
当我点击“生成”时,我什么也没显示。有任何想法吗?谢谢!
【问题讨论】:
-
是发生的点击事件。尝试将点击事件保留在 onstart 中,而不是我所做的
-
@IllegalArgument 当我尝试打开 ViewPager 时会产生错误
-
@IllegalArgument 没有错误,当我按下按钮时没有任何反应,我不知道为什么。
标签: java android xml android-fragments