2013-08-19 2 views
4

이 코드는 내가 작성한 코드입니다.이 기능이 작동하지 않을 때 찾을 수 없었지만 때때로 작동합니다.IllegalStateException : FragmentActivity 클래스의 onSaveInstanceState 이후에이 작업을 수행 할 수 없습니다.

public class ListFragmentActivity extends FragmentActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    main(); 
    IntentFilter filter1 = new IntentFilter("com.venkat.listfragment"); 
    registerReceiver(myReceiver, filter1); 
    // register reciever intent filter. 

} 
public void main(){ 
    IntentFilter filter1 = new IntentFilter("com.venkat.listfragment"); 
    registerReceiver(myReceiver, filter1); 
    List_Fragment ls_fragment = new List_Fragment(); 
    getSupportFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); 
    getSupportFragmentManager().beginTransaction() 
    .replace(android.R.id.content, ls_fragment).addToBackStack(null).commitAllowingStateLoss(); 
} 

@Override 
protected void onSaveInstanceState(Bundle outState) { 
} 
private BroadcastReceiver myReceiver = new BroadcastReceiver() 
{ 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     main(); 

    } 
};} 

내가 네 개의 탭을 가지고, 내가 하나 개의 탭을 클릭하면이 해당 화면을 표시하고 내가 클릭했을 때 해당 화면에서 내가 이전 화면으로 돌아 얻기 위해 같은 tab.but에있는 다른 화면을 탐색하고 동일한 탭 내가 그것에 대한 방송 수신기를 작성했습니다.

08-19 10:13:51.436: E/AndroidRuntime(2830): FATAL EXCEPTION: main 
08-19 10:13:51.436: E/AndroidRuntime(2830): java.lang.RuntimeException: Error receiving broadcast Intent { act=com.venkat.listfragment } in [email protected] 
08-19 10:13:51.436: E/AndroidRuntime(2830):  at android.app.ActivityThread$PackageInfo$ReceiverDispatcher$Args.run(ActivityThread.java:905) 
08-19 10:13:51.436: E/AndroidRuntime(2830):  at android.os.Handler.handleCallback(Handler.java:587) 
08-19 10:13:51.436: E/AndroidRuntime(2830):  at android.os.Handler.dispatchMessage(Handler.java:92) 
08-19 10:13:51.436: E/AndroidRuntime(2830):  at android.os.Looper.loop(Looper.java:123) 
08-19 10:13:51.436: E/AndroidRuntime(2830):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
08-19 10:13:51.436: E/AndroidRuntime(2830):  at java.lang.reflect.Method.invokeNative(Native Method) 
08-19 10:13:51.436: E/AndroidRuntime(2830):  at java.lang.reflect.Method.invoke(Method.java:521) 
08-19 10:13:51.436: E/AndroidRuntime(2830):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858) 
08-19 10:13:51.436: E/AndroidRuntime(2830):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
08-19 10:13:51.436: E/AndroidRuntime(2830):  at dalvik.system.NativeStart.main(Native Method) 
08-19 10:13:51.436: E/AndroidRuntime(2830): Caused by: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState 
08-19 10:13:51.436: E/AndroidRuntime(2830):  at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1343) 
08-19 10:13:51.436: E/AndroidRuntime(2830):  at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1354) 
08-19 10:13:51.436: E/AndroidRuntime(2830):  at android.support.v4.app.FragmentManagerImpl.popBackStack(FragmentManager.java:493) 
08-19 10:13:51.436: E/AndroidRuntime(2830):  at com.venkat.main.ListFragmentActivity.main(ListFragmentActivity.java:65) 
08-19 10:13:51.436: E/AndroidRuntime(2830):  at com.venkat.main.ListFragmentActivity$1.onReceive(ListFragmentActivity.java:89) 
08-19 10:13:51.436: E/AndroidRuntime(2830):  at android.app.ActivityThread$PackageInfo$ReceiverDispatcher$Args.run(ActivityThread.java:892) 
08-19 10:13:51.436: E/AndroidRuntime(2830):  ... 9 more 

나는이 문제와 관련된 많은 링크를 참조하지만, 그 내 문제가 해결되지 않습니다

내가이 오류를 얻고있다.

+0

이 문제는보고 된이 문제에 묶여 있다고 생각합니다 [이 질문에] (http://stackoverflow.com/q/7469082/1051783). – gunar

+0

질문/답변에서 인용 부호 ">"의 오용을 중지하십시오. 이것은 따옴표로 묶지 않기 위해 사용되지 않습니다. – WarrenFaith

답변

6

BroadcastReceiver를 onResume()에 등록하고 onPause()에서 등록을 취소하면 문제가 해결됩니다. 필요한 경우 onStart()/onStop()을 사용할 수도 있습니다.

+0

thanq 현재 작동 중입니다. – Venkat

+0

@ beworker 답변 +1 – KOTIOS

관련 문제