Android 充气机错误。充气

Android 充气机错误。充气,android,android-fragments,android-inflate,Android,Android Fragments,Android Inflate,我有一个列表视图,每个项目加载一个片段,其中包括另一个片段。第一次充电没问题,但当我返回lisview并重新加载另一个片段(或相同片段)时,我在线路上遇到了以下错误: view = inflater.inflate(R.layout.fragment_text_receiver, container, false); 错误: 01-11 15:40:59.940: E/AndroidRuntime(14700): FATAL EXCEPTION: main 01-11 15:40:59.940

我有一个列表视图,每个项目加载一个片段,其中包括另一个片段。第一次充电没问题,但当我返回lisview并重新加载另一个片段(或相同片段)时,我在线路上遇到了以下错误:

view = inflater.inflate(R.layout.fragment_text_receiver, container, false);
错误:

01-11 15:40:59.940: E/AndroidRuntime(14700): FATAL EXCEPTION: main
01-11 15:40:59.940: E/AndroidRuntime(14700): android.view.InflateException: Binary XML file line #43: Error inflating class fragment
01-11 15:40:59.940: E/AndroidRuntime(14700):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
01-11 15:40:59.940: E/AndroidRuntime(14700):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
01-11 15:40:59.940: E/AndroidRuntime(14700):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:749)
01-11 15:40:59.940: E/AndroidRuntime(14700):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:749)
01-11 15:40:59.940: E/AndroidRuntime(14700):    at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
01-11 15:40:59.940: E/AndroidRuntime(14700):    at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
01-11 15:40:59.940: E/AndroidRuntime(14700):    at com.gzanitti.tsar.fragments.ReceiverFragment.onCreateView(ReceiverFragment.java:70)
01-11 15:40:59.940: E/AndroidRuntime(14700):    at android.support.v4.app.Fragment.performCreateView(Fragment.java:1500)
01-11 15:40:59.940: E/AndroidRuntime(14700):    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:927)
01-11 15:40:59.940: E/AndroidRuntime(14700):    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
01-11 15:40:59.940: E/AndroidRuntime(14700):    at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
01-11 15:40:59.940: E/AndroidRuntime(14700):    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467)
01-11 15:40:59.940: E/AndroidRuntime(14700):    at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:440)
01-11 15:40:59.940: E/AndroidRuntime(14700):    at android.os.Handler.handleCallback(Handler.java:615)
01-11 15:40:59.940: E/AndroidRuntime(14700):    at android.os.Handler.dispatchMessage(Handler.java:92)
01-11 15:40:59.940: E/AndroidRuntime(14700):    at android.os.Looper.loop(Looper.java:137)
01-11 15:40:59.940: E/AndroidRuntime(14700):    at android.app.ActivityThread.main(ActivityThread.java:4898)
01-11 15:40:59.940: E/AndroidRuntime(14700):    at java.lang.reflect.Method.invokeNative(Native Method)
01-11 15:40:59.940: E/AndroidRuntime(14700):    at java.lang.reflect.Method.invoke(Method.java:511)
01-11 15:40:59.940: E/AndroidRuntime(14700):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
01-11 15:40:59.940: E/AndroidRuntime(14700):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
01-11 15:40:59.940: E/AndroidRuntime(14700):    at dalvik.system.NativeStart.main(Native Method)
01-11 15:40:59.940: E/AndroidRuntime(14700): Caused by: java.lang.IllegalArgumentException: Binary XML file line #43: Duplicate id 0x7f050069, tag null, or parent id 0x0 with another fragment for com.gzanitti.tsar.fragments.CommentsFragment
01-11 15:40:59.940: E/AndroidRuntime(14700):    at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:296)
01-11 15:40:59.940: E/AndroidRuntime(14700):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:676)
01-11 15:40:59.940: E/AndroidRuntime(14700):    ... 21 more
我不知道会发生什么事。XML文件第34行是声明片段的位置:

<fragment
        android:id="@+id/fragmentComments"
        android:name="com.gzanitti.tsar.fragments.CommentsFragment"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/txtReceiverText"
        android:layout_alignParentBottom="true"
        android:layout_alignRight="@+id/txtReceiverText"
        android:layout_alignTop="@+id/txtReceiverTitle"/>
}

类OnClickReceiveFragmentListener实现OnClickListener{

private FragmentActivity mActivity;
private ReceiverFragment mFragment;

public OnClickReceiverFragmentListener(FragmentActivity activity, ReceiverFragment fragment) {
    this.mActivity = activity;
    this.mFragment = fragment;
}

@Override
public void onClick(View v) {
    switch (v.getId()) {
    case R.id.btnPlay:
        ImageButton btnPlay = ((ImageButton) mActivity.findViewById(R.id.btnPlay));
        if(btnPlay.isEnabled()) {
            mFragment.mPlayer.start();
        }
        break;
    case R.id.btnPause:
        ImageButton btnPause = ((ImageButton) mActivity.findViewById(R.id.btnPause));
        if(btnPause.isEnabled()) {
            mFragment.mPlayer.pause();
        }
        break;
    case R.id.frameComments:
        TextView txtComments = (TextView) v.findViewById(R.id.txtShowComments);
        FragmentManager fManager = mFragment.getFragmentManager();
        if(CommentsFragment.isOpen) {
            CommentsFragment.isOpen = false;
            txtComments.setText("Show comments");

            fManager.beginTransaction()
                .setCustomAnimations(R.anim.abc_slide_in_bottom, R.anim.abc_slide_out_bottom)
                .hide(mFragment.fragmentComments)
                .commit();

        } else {
            CommentsFragment.isOpen = true;
            txtComments.setText("Hide comments");   

            fManager.beginTransaction()
                .setCustomAnimations(R.anim.abc_slide_in_bottom, R.anim.abc_slide_out_bottom)
                .show(mFragment.fragmentComments)
                .commit();  
        }
        break;
    default:
        break;
    }       
}

}

第一次很好,但当我回来尝试加载另一个时,出现了此错误

解决方案是在FramentParent detach上强制删除子片段

@Override
public void onDetach() {
    super.onDetach();
    getActivity().getSupportFragmentManager().beginTransaction().remove(fragmentComments).commit();
}

发布完整的xml布局检查我的帖子问题应该得到解决您使用嵌套片段,它有一些问题,请参阅抱歉,我以为您的id重复了。即使在该转换中,lint也会警告您,如果您不介意的话,也可以发布片段代码吗
private FragmentActivity mActivity;
private ReceiverFragment mFragment;

public OnClickReceiverFragmentListener(FragmentActivity activity, ReceiverFragment fragment) {
    this.mActivity = activity;
    this.mFragment = fragment;
}

@Override
public void onClick(View v) {
    switch (v.getId()) {
    case R.id.btnPlay:
        ImageButton btnPlay = ((ImageButton) mActivity.findViewById(R.id.btnPlay));
        if(btnPlay.isEnabled()) {
            mFragment.mPlayer.start();
        }
        break;
    case R.id.btnPause:
        ImageButton btnPause = ((ImageButton) mActivity.findViewById(R.id.btnPause));
        if(btnPause.isEnabled()) {
            mFragment.mPlayer.pause();
        }
        break;
    case R.id.frameComments:
        TextView txtComments = (TextView) v.findViewById(R.id.txtShowComments);
        FragmentManager fManager = mFragment.getFragmentManager();
        if(CommentsFragment.isOpen) {
            CommentsFragment.isOpen = false;
            txtComments.setText("Show comments");

            fManager.beginTransaction()
                .setCustomAnimations(R.anim.abc_slide_in_bottom, R.anim.abc_slide_out_bottom)
                .hide(mFragment.fragmentComments)
                .commit();

        } else {
            CommentsFragment.isOpen = true;
            txtComments.setText("Hide comments");   

            fManager.beginTransaction()
                .setCustomAnimations(R.anim.abc_slide_in_bottom, R.anim.abc_slide_out_bottom)
                .show(mFragment.fragmentComments)
                .commit();  
        }
        break;
    default:
        break;
    }       
}

}
@Override
public void onDetach() {
    super.onDetach();
    getActivity().getSupportFragmentManager().beginTransaction().remove(fragmentComments).commit();
}