gpt4 book ai didi

android - 带有 fragment 更改的滑动菜单

转载 作者:行者123 更新时间:2023-11-30 03:33:10 24 4
gpt4 key购买 nike

我在我的应用程序中使用滑动菜单库。滑动菜单是一个 fragment 。

蓝色部分是打开时的滑动菜单。

红色部分是静态的,不会改变,顺便说一句,它是主要 Activity 。黄色部分是用户点击滑动菜单项时发生变化的 fragment 。

problem with sliding menu and fragments

以下是我实现它时出现的问题:

在滑动菜单 fragment 中,我监听 OnItemClick 事件,并根据所点击项目的位置创建一个新 fragment 。之后,我将黄色帧 ID 替换为 fragment 。

        @Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
FragmentManager manager = getFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
Fragment frag = null;
switch (arg2) {
case 1:
frag = new ExpFragment();
break;

case 2:
frag = new FormFragment();
break;

case 3:
frag = new CompFragment();
break;

default:
frag = new ContactFragment();
break;
}
transaction.replace(R.id.fragment, frag);
transaction.commit();
}

看起来不错吧?好吧,不。这是我得到的 logcat 异常。

06-13 09:28:29.739: E/AndroidRuntime(15422): java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.

所以,如果有人有线索,或者可以告诉我要看什么,那就太棒了!

TL;DR :有 2 个 fragment (蓝色和黄色),蓝色必须更改为黄色。给我一个异常(exception)。

谢谢,

编辑:布局文件:activity_main :https://gist.github.com/dommerq/5771887一个 fragment 项目示例:https://gist.github.com/dommerq/5771892

最佳答案

答案在我的 fragment java 代码中。

我有:

    @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(com.quentindommerc.flatme.R.layout.f_contact, container);
return v;
}

我应该:

    @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(com.quentindommerc.flatme.R.layout.f_contact, container, false);
return v;
}

所以基本上,在 inflate 方法中,将“false”作为第三个参数。

编辑:更正了拼写错误。

关于android - 带有 fragment 更改的滑动菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17081560/

24 4 0