2014-10-08 208 views
0

我的項目結構如下:我有一個活動調用一個片段。我的目標是能夠簡單地將片段從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

回答

3

當你提交代碼,請確保您的活動沒有完成。 so like like this:

if (!isFinishing()) { 
      fragmentTransaction.commit(); 
     } 
相關問題