活动已被破坏在fragmenttransaction.commit

问题描述:

我的项目结构如下:我有一个活动调用一个片段。我的目标是能够简单地将片段从1切换到另一个片段。我创建了一个新的类来处理下面显示的点击。我成功地输入我的1的情况下,因为它出现在我的logcat。我的问题出现之后由于某种原因,我无法切换碎片。我试图切换到的片段是聊天室。活动已被破坏在fragmenttransaction.commit

我现在试图得到碎片的悬挂,所以任何帮助将做。如有必要,我也可以发布我的Activity类。 谢谢。

10-08 00:43:43.706 32310-32310/com.layoutpractice E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    Process: com.layoutpractice, PID: 32310 
    java.lang.IllegalStateException: Activity has been destroyed 
      at android.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1347) 
      at android.app.BackStackRecord.commitInternal(BackStackRecord.java:597) 
      at android.app.BackStackRecord.commit(BackStackRecord.java:575) 
      at com.layoutpractice.ClickityClickClick.addFragments(ClickityClickClick.java:43) 
      at com.layoutpractice.ClickityClickClick.onClick(ClickityClickClick.java:33) 
      at android.view.View.performClick(View.java:4456) 
      at android.view.View$PerformClick.run(View.java:18482) 
      at android.os.Handler.handleCallback(Handler.java:733) 
      at android.os.Handler.dispatchMessage(Handler.java:95) 
      at android.os.Looper.loop(Looper.java:136) 
      at android.app.ActivityThread.main(ActivityThread.java:5097) 
      at java.lang.reflect.Method.invoke(Native Method) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 

下面是我的onClickListener类:

/** 
* Created by Programmer 552 on 10/7/2014. 
*/ 
public class ClickityClickClick implements View.OnClickListener { 

    public static String DEBUG = "Debug"; 
    private LetsPutInAChatBox activity = new LetsPutInAChatBox(); 
    private ChatFragment chatty = new ChatFragment(); 

    private int test; 


    public ClickityClickClick(int test) { 
     this.test = test; 
    } 

    @Override 
    public void onClick(View v) { 
     switch (test) { 
      case 1: 
       Log.d(DEBUG, "IN THE METHOD"); 
       addFragments(chatty); 

     } 
    } 

    public void addFragments(Fragment fragment) { 
     FragmentManager manager = activity.getFragmentManager(); 
     FragmentTransaction ft = manager.beginTransaction(); 
     ft.replace(R.id.container, fragment); 
     ft.commit(); 
    } 
} 

这里是我的片段,我想用我的addFragments方法来调用:

public class ChatFragment extends Fragment { 
    LetsPutInAChatBox activity; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     activity = new LetsPutInAChatBox(); 
     View rootView = inflater.inflate(R.layout.chat_box, container, false); 

     return rootView; 
    } 

    @Override 
    public void onAttach(Activity activity) { 
     this.activity = (LetsPutInAChatBox) activity; 
     super.onAttach(activity); 
    } 

} 
+0

删除此行activity = new LetsPutInAChatBox();从onCreateView? – 2014-10-08 05:07:51

+0

我刚试了一下,崩溃了。同样的错误。 – Programmer552 2014-10-08 05:10:26

+0

您的活动类是ClickityClickClick,但您的类型转换为LetsPutInAChatBox。删除类型转换并运行 – 2014-10-08 05:17:47

当你提交代码,请确保您的活动没有完成。 so like like this:

if (!isFinishing()) { 
      fragmentTransaction.commit(); 
     }