gpt4 book ai didi

android - fragment 里面的 fragment

转载 作者:IT老高 更新时间:2023-10-28 13:01:03 25 4
gpt4 key购买 nike

我需要关于在 fragment 中处理 fragment 的帮助,实际上我我在按下后退按钮时遇到问题。应用程序主屏幕有按钮并按下每个按钮 View 替换为新的 fragment (并且该 fragment 包含在另一个 fragment 中),动态添加/替换 fragment 工作正常,按button1 fragment 被替换,按下按钮时也会发生同样的情况,但如果我再次按下按钮,出现异常:

"Duplicate id 0x7f05000a, tag null, or parent id 0x7f050009 with
another fragment for com........ fragmentname"

表示已经添加了 fragment 或内部 fragment ,我正在尝试再次添加它们,任何人都知道如何在里面使用 fragment fragment 和来回移动没有任何问题,谢谢支持。

MainActivity,其中 fragment 是动态添加的,并且换了。

public class FragmentInsideFragmentTestActivity extends Activity {

private Button button1;
private Button button2;
private Button button3;
private Button button4;


/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

button1 =(Button) this.findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
onButtonClick(view);
}
});

button2 =(Button) this.findViewById(R.id.button2);
button2.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
onButtonClick(view);
}
});

button3 =(Button) this.findViewById(R.id.button3);
button3.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
onButtonClick(view);
}
});

button4 =(Button) this.findViewById(R.id.button4);
button4.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
onButtonClick(view);
}
});
}

public void onButtonClick(View v) {
Fragment fg;

switch (v.getId()) {
case R.id.button1:
fg=FirstFragment.newInstance();
replaceFragment(fg);
break;
case R.id.button2:
fg=SecondFragment.newInstance();
replaceFragment(fg);
break;
case R.id.button3:
fg=FirstFragment.newInstance();
replaceFragment(fg);
break;
case R.id.button4:
fg=SecondFragment.newInstance();
replaceFragment(fg);
break;
}
}

private void replaceFragment(Fragment newFragment) {
FragmentTransaction trasection = getFragmentManager().beginTransaction();

if(!newFragment.isAdded()) {
try {
//FragmentTransaction trasection =
getFragmentManager().beginTransaction();
trasection.replace(R.id.linearLayout2, newFragment);
trasection.addToBackStack(null);
trasection.commit();
} catch (Exception e) {
// TODO: handle exception
// AppConstants.printLog(e.getMessage());
} else {
trasection.show(newFragment);
}
}
}

这是布局:main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">

<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">

<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button1" />

<Button
android:id="@+id/button2"
android:text="Button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

<Button
android:id="@+id/button3"
android:text="Button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

<Button
android:id="@+id/button4"
android:text="Button4"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>

<LinearLayout
android:id="@+id/linearLayout2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" />
</LinearLayout>

希望我试图解决我的问题。

最佳答案

AFAIK, fragment 不能容纳其他 fragment 。


更新

使用当前版本的 Android 支持包(或 API 级别 17 及更高级别的原生 fragment ),您可以通过 getChildFragmentManager() 嵌套 fragment 。请注意,这意味着您需要在 API 级别 11-16 上使用 Fragment 的 Android 支持包版本,因为即使这些设备上有原生版本的 Fragment,该版本也没有 getChildFragmentManager().

关于android - fragment 里面的 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6672066/

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