gpt4 book ai didi

android - 以编程方式将 fragment 添加到 View 组

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:55:02 25 4
gpt4 key购买 nike

基本上这是我的平板横向应用程序(想法):两个 fragment ,左侧 fragment 是一个由 resource.xml 文件填充的列表 fragment (可以正常工作)。

Right fragment 应该根据用户单击的列表项动态更改 fragment 和布局。谷歌搜索到目前为止告诉我,我需要以编程方式向 View 组添加和删除 fragment 来执行此操作。是吗?

基本上问题是:

  1. 如何创建 View 组以及在哪里(Main.java 或 menufragment.java)?
  2. 如何将动态“用户点击 ID 3 添加到列表中,以便将 fragment 3 添加到 View 组”
  3. 我要在我的 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.javaonListItemClick 实现:

@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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com