2013-02-25 1 views
4

태블릿에 나란히 표시되는 2 개의 단편이 있습니다. 사용자가 fragmentA의 목록보기에서 항목을 선택할 때 fragmentA에서 fragmentB로 일부 데이터를 전달해야합니다. 내 문제는 활동에서 fragmentB 데이터를 가져 오려고 할 때 발생합니다. IlligalStateException : 프래그먼트가 이미 활성화되어 있습니다.추가 된 단편에 데이터 전달 - IlligalStateException : 이미 사용중인 단편

@Override 
    public void onTrackSelected(String trackId) { 

     topBarFragment topBarFragment = (topBarFragment)getSupportFragmentManager().findFragmentById(R.id.topBar_fragment); 

     Bundle bundle = new Bundle(); 
     bundle.putString("trackId", trackId); 
     //set Fragmentclass Arguments 
     topBarFragment.setArguments(bundle); 

     topBarFragment.onTrackSelected(); 

    } 

그리고 다음과 같이 fragmentB에 나타납니다 :

나는 활동에서이 같은 데이터를 전달

public void onTrackSelected() { 

     String trackId = getArguments().getString("trackId"); 
     Toast.makeText(getActivity().getApplicationContext(), trackId,Toast.LENGTH_SHORT).show(); 

    } 
} 

로그 캣 :

02-25 02:58:22.190: E/AndroidRuntime(29593): FATAL EXCEPTION: main 
02-25 02:58:22.190: E/AndroidRuntime(29593): java.lang.IllegalStateException: Fragment already active 
02-25 02:58:22.190: E/AndroidRuntime(29593): at android.support.v4.app.Fragment.setArguments(Fragment.java:500) 
02-25 02:58:22.190: E/AndroidRuntime(29593): at com.harteg.fragmentstest.ItemListActivity.onTrackSelected(ItemListActivity.java:88) 
02-25 02:58:22.190: E/AndroidRuntime(29593): at com.harteg.fragmentstest.TracksFragment.onListItemClick(TracksFragment.java:136) 
02-25 02:58:22.190: E/AndroidRuntime(29593): at android.support.v4.app.ListFragment$2.onItemClick(ListFragment.java:58) 
02-25 02:58:22.190: E/AndroidRuntime(29593): at android.widget.AdapterView.performItemClick(AdapterView.java:298) 
02-25 02:58:22.190: E/AndroidRuntime(29593): at android.widget.AbsListView.performItemClick(AbsListView.java:1100) 
02-25 02:58:22.190: E/AndroidRuntime(29593): at android.widget.AbsListView$PerformClick.run(AbsListView.java:2749) 
02-25 02:58:22.190: E/AndroidRuntime(29593): at android.widget.AbsListView$1.run(AbsListView.java:3423) 
02-25 02:58:22.190: E/AndroidRuntime(29593): at android.os.Handler.handleCallback(Handler.java:725) 
02-25 02:58:22.190: E/AndroidRuntime(29593): at android.os.Handler.dispatchMessage(Handler.java:92) 
02-25 02:58:22.190: E/AndroidRuntime(29593): at android.os.Looper.loop(Looper.java:137) 
02-25 02:58:22.190: E/AndroidRuntime(29593): at android.app.ActivityThread.main(ActivityThread.java:5039) 
02-25 02:58:22.190: E/AndroidRuntime(29593): at java.lang.reflect.Method.invokeNative(Native Method) 
02-25 02:58:22.190: E/AndroidRuntime(29593): at java.lang.reflect.Method.invoke(Method.java:511) 
02-25 02:58:22.190: E/AndroidRuntime(29593): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
02-25 02:58:22.190: E/AndroidRuntime(29593): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
02-25 02:58:22.190: E/AndroidRuntime(29593): at dalvik.system.NativeStart.main(Native Method) 

답변

8

당신은 변경할 수 없습니다 인수가 생성 된 후 단편에 전달 된 인수.

topBarFragment.onTrackSelected(trackId); 

을 그리고 당신의 조각에 사용 : 당신이 무엇을해야는 다음과 같이 당신의 메서드 호출에 데이터를 전달하는 방법에 대한 설명서 here에 대한 자세한 내용은

public void onTrackSelected(int trackId) { 
    Toast.makeText(getActivity().getApplicationContext(), String.valueOf(trackId),Toast.LENGTH_SHORT).show(); 
} 

보라 조각 사이의 통신을 처리합니다.

+0

감사합니다. 정말 고맙습니다! 이것은 나를 미치게했다. – Jakob

+0

working nice .... – NagarjunaReddy

관련 문제