IllegalStateException:活动已被销毁

时间:2015-07-27 06:23:47

标签: android

我收到了IllegalStateException:活动已在ft.commit()

被销毁

我已经发布了相关代码并指出了错误行。我不知道导致错误的原因。

堆栈跟踪:

07-27 02:01:31.776  15571-15571/com.ms.ha E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.IllegalStateException: Activity has been destroyed
            at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1397)
            at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:636)
            at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:615)
            at com.ms.ha.activity.MainActivity.articleSelected1(MainActivity.java:248)
            at com.ms.ha.activity.GridActivity3.onClick(GridActivity3.java:98)
            at android.view.View.performClick(View.java:4240)
            at android.view.View$PerformClick.run(View.java:17721)
            at android.os.Handler.handleCallback(Handler.java:730)
            at android.os.Handler.dispatchMessage(Handler.java:92)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:5103)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:525)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
            at dalvik.system.NativeStart.main(Native Method)

我需要移动DetailsFragment类onClick GridActivity中的按钮。这就是我使用mainActivity实例的原因。

GridActivity3.java:

public class GridActivity3 extends FragmentActivity implements OnClickListener {

   .......
   .......
     @Override
    public void onClick(View v) {

        switch (v.getId()) {

         case R.id.btn_home:

         MainActivity main= new MainActivity();

         main.articleSelected1(6);


         break;

        }
      }
    }

MainActivity.java:

public class MainActivity extends ActionBarActivity implements OnTabChangeListener,ArticleSelectedListener1 {


 @Override
    public void onArticleSelected1(int position)
    {
        articleSelected1(position);

    }

    public void articleSelected1(int position)
    {
 if(position==6)
        {
            //     action_bar_hometext.setText(content);
            FragmentManager manager = getSupportFragmentManager();
            FragmentTransaction ft = manager.beginTransaction();
            DetailsFragment newFragment = new DetailsFragment();
            ft.replace(R.id.realtabcontent, newFragment);
            ft.addToBackStack(null);
            ft.commit();    ----> 248th line

        }
      }

我不知道如何解决这个错误。任何人都可以帮助我。谢谢。

1 个答案:

答案 0 :(得分:3)

您的问题出在GridActivity3

     MainActivity main= new MainActivity();

     main.articleSelected1(6);

活动类不应该像这样使用。 您不应该创建自己的Activity实例,只需让Android创建并维护它即可 如果您想拨打articleSelected1(6);,请将一些数据放入Intent,然后将其返回以检查MainActivity,然后将其调用。
更新 试试这个:
1.在onClick GridActivity
Intent startMain = new Intent(this, MainActivity.class); startMain.putExtra("position", 6); startActivity(startMain);
2。在MainAcitivty的onCreated中 int pos = getIntent().getIntExtra("position", 0); articleSelected1(pos);