我收到IllegalStateException异常:活动曾在被摧毁ft.commit()
我已经发布了相关的code,指出错误line.I不知道是什么引起的错误。
堆栈跟踪:
二月7日至27日:01:31.776 15571-15571 / com.ms.ha E / AndroidRuntime:致命异常:主要
java.lang.IllegalStateException:活动已被破坏
在android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1397)
在android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:636)
在android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:615)
在com.ms.ha.activity.MainActivity.articleSelected1(MainActivity.java:248)
在com.ms.ha.activity.GridActivity3.onClick(GridActivity3.java:98)
在android.view.View.performClick(View.java:4240)
在android.view.View $ PerformClick.run(View.java:17721)
在android.os.Handler.handleCallback(Handler.java:730)
在android.os.Handler.dispatchMessage(Handler.java:92)
在android.os.Looper.loop(Looper.java:137)
在android.app.ActivityThread.main(ActivityThread.java:5103)
在java.lang.reflect.Method.invokeNative(本机方法)
在java.lang.reflect.Method.invoke(Method.java:525)
在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:737)
在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
在dalvik.system.NativeStart.main(本机方法)
我需要移动DetailsFragment类的onClick按钮在GridActivity.Thats为什么我使用mainActivity的实例。
GridActivity3.java:
公共类GridActivity3扩展FragmentActivity实现OnClickListener {
.......
.......
@覆盖
公共无效的onClick(视图v){
开关(v.getId()){
案例R.id.btn_home:
MainActivity主要=新MainActivity();
main.articleSelected1(6);
打破;
}
}
}
MainActivity.java:
公共类MainActivity扩展ActionBarActivity实现OnTabChangeListener,ArticleSelectedListener1 {
@覆盖
公共无效onArticleSelected1(INT位置)
{
articleSelected1(位置);
}
公共无效articleSelected1(INT位置)
{
如果(位置== 6)
{
// action_bar_hometext.setText(内容);
FragmentManager经理= getSupportFragmentManager();
FragmentTransaction英尺= manager.beginTransaction();
DetailsFragment newFragment =新DetailsFragment();
ft.replace(R.id.realtabcontent,newFragment);
ft.addToBackStack(空);
ft.commit(); ---->第248行
}
}
我不知道如何解决这个error.Anyone可以帮我this.Thank你。 解决方案
您的问题是在GridActivity3
MainActivity主要=新MainActivity();
main.articleSelected1(6);
Activity类不应该用这样的。
你不应该创建自己的活动的情况下,只是让Android的创建和维护。
如果你想调用 articleSelected1(6);
,把一些数据,以意图再赚回来检查在 MainActivity
然后调用它。
更新
试试这个:
1.在的onClick GridActivity
意图startMain =新的意图(这一点,MainActivity.class);
startMain.putExtra(位置,6);
startActivity(startMain);
2。在 MainAcitivty
的onCreated
INT POS = getIntent()getIntExtra(位置,0);
articleSelected1(POS);
I am getting IllegalStateException : Activity has been destroyed at ft.commit()
I have posted the relevant code and pointed out the error line.I dont know what cause the error.
Stacktrace:
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)
I need to move DetailsFragment class onClick the button in GridActivity.Thats why I am using the instance of 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
}
}
I don't know how to solve this error.Anyone can help me with this.Thank you.
解决方案Your problem is in GridActivity3
MainActivity main= new MainActivity();
main.articleSelected1(6);
Activity class shouldn't be use like that.
You shouldn't create your own instance of Activity, just let Android create and maintain it.
If you want to call articleSelected1(6);
, put some data to Intent then get it back to check in MainActivity
then call it.
UPDATE
Try this:
1. In onClick GridActivity
Intent startMain = new Intent(this, MainActivity.class);
startMain.putExtra("position", 6);
startActivity(startMain);
2. in onCreated of MainAcitivty
int pos = getIntent().getIntExtra("position", 0);
articleSelected1(pos);
相关推荐
最新文章