2015-04-29 57 views
1

我有gridview项目点击项目我移动到具有片段的活动。当我去活动回来GridView和立即去为它失败与下面的异常其他项目活动:片段已激活:非法状态异常

at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2318) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2396) 
     at android.app.ActivityThread.access$800(ActivityThread.java:139) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1293) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:149) 
     at android.app.ActivityThread.main(ActivityThread.java:5257) 
     at java.lang.reflect.Method.invokeNative(Method.java) 
     at java.lang.reflect.Method.invoke(Method.java:515) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:817) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:633) 
     at dalvik.system.NativeStart.main(NativeStart.java) 
Caused by: java.lang.IllegalStateException: Fragment already active 
     at android.support.v4.app.Fragment.setArguments(Fragment.java:530) 
     at com.buzzreel.MyActivity.onCreate(MyActivity.java:81) 
     at android.app.Activity.performCreate(Activity.java:5411) 
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2270) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2396) 
     at android.app.ActivityThread.access$800(ActivityThread.java:139) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1293) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:149) 
     at android.app.ActivityThread.main(ActivityThread.java:5257) 
     at java.lang.reflect.Method.invokeNative(Method.java) 
     at java.lang.reflect.Method.invoke(Method.java:515) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:817) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:633) 
     at dalvik.system.NativeStart.main(NativeStart.java) 

这是MyActivity的onCreate(我的片段的代码):

Fragment myFragment = MyFragment.getInstance(); 
       Bundle profileArgs = new Bundle(); 
       profileArgs.putSerializable("data", customObject); 
       myFragment.setArguments(profileArgs); 

       FragmentManager manager = getSupportFragmentManager(); 

       FragmentTransaction transaction = manager.beginTransaction(); 

       transaction.add(R.id.fragment_info, myFragment, 
          "MyFragment"); 
       transaction.commit(); 

这是getInstance方法在片段类:

public static MyFramgent getInstance() { 
         return new MyFramgent(); 
       } 

回答

0

的问题是,您使用的是相同的片段,每次堆栈中命名您点击这里一个GridView项:

transaction.add(R.id.fragment_info, myFragment, "MyFragment"); 

你需要做的是设置该字符串为null:

transaction.add(R.id.fragment_info, myFragment, null); 

,或者如果你正在使用的名字从返回堆栈,然后使用不同的名称为每个GridView的的onclick的

+0

尝试不工作..有时它仍然崩溃。 – virendrao