基本上这是我的平板横向应用程序(想法): 两个 fragment ,左侧 fragment 是一个由 resource.xml 文件填充的列表 fragment (可以正常工作)。
Right fragment 应该根据用户单击的列表项动态更改 fragment 和布局。谷歌搜索到目前为止告诉我,我需要以编程方式向 View 组添加和删除 fragment 来执行此操作。是吗?
基本上问题是:
- 如何创建 View 组以及在哪里(Main.java 或 menufragment.java)?
- 如何将动态“用户点击 ID 3 添加到列表中,以便将 fragment 3 添加到 View 组”
- 我要在我的 main.xml 文件中添加什么?那里有 listfragment 的 fragment ,要为动态 View 组添加什么?
编辑:
这就是我的 Activity 的样子: 主.java
public class Main extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
这是我的列表 fragment 菜单 fragment .java
public class MenuFragment extends ListFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.listfragment, container, false);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setListAdapter(new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_1,
getResources().getStringArray(R.array.listmenu)));
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
Main activity = (Main) getActivity();
}
}
最后是我的 main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<fragment
android:id="@+id/list"
android:layout_width="200dp"
android:layout_height="fill_parent"
android:layout_alignParentTop="true"
android:layout_weight="1"
class="com.mwerner.fragmentstest.MainMenu" />
<View
android:id="@+id/contentview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/list" />
</RelativeLayout>
我在我的 xml 文件中填充列表的字符串数组称为“listmenu”
请告诉我需要将您写下的代码放在哪里?
最佳答案
看看这些 Fragment 主题:
本质上,您需要让 left fragment 告诉父 Activity 选择了哪个项目。然后, Activity 可以在右 Pane 中添加/删除正确的 fragment 。
请记住,创建/销毁 fragment 对系统来说是一项繁重的工作。如果您可以在右侧 Pane 中放置一个 Fragment,效率会高得多。然后,您可以在该 Fragment 实例上调用方法,而无需构建新的 Fragment。
编辑(示例):
您使用自定义方法的主 Activity 实现:
public class Main extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
/** Called by the left fragment */
public void updateRightPane(long id) {
// Get the data with the selected item id
// ...
// Create a new fragment
MyFragment fragment = new MyFragment(data);
// Update the layout
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
// The id specified here identifies which ViewGroup to
// append the Fragment to.
ft.add(R.id.view_group_id, fragment);
ft.commit();
}
}
MenuFragment.java
的onListItemClick
实现:
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
// Get the parent Activity
Main activity = (Main) getActivity();
// Pass the selected item id to the Activity method
// Note: Feel free to update this method to accept additional
// arguments (e.g. position).
activity.updateRightPane(id);
}
最后,你的布局文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/view_group_id"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<!-- More views here... -->
</RelativeLayout>
关于android - 以编程方式将 fragment 添加到 View 组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9510494/