मैं एक नक्शा गतिविधि (SherlockFragmentActivity) है कि एक नक्शे टुकड़ा 2 अलग टुकड़े दिखा के बीच 2 बटन और स्विच है कि में भार (GoogleMapFragment & ScaleImageViewFragment)स्विचिंग टुकड़े - गूगल मानचित्र टुकड़ा V2 - गतिविधि नष्ट कर दिया गया त्रुटि
": गतिविधि नष्ट कर दिया गया java.lang.IllegalStateException" त्रुटि
ERROR/AndroidRuntime(5768): FATAL EXCEPTION: main
java.lang.IllegalStateException: Activity has been destroyed
at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1342)
at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:595)
at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:574)
at com.takeit2eleven.towniemeeting.android.fragments.GoogleMapFragment.onCreateView(GoogleMapFragment.java:42)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:1460)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:911)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1444)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:429)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
जब मैं प्रदर्शक नक्शा बटन यह टुकड़ा की जगह क्लिक करें, लेकिन जब मैं वापस क्लिक करें मैं एक मिल
public class MapsFragment extends SherlockFragment {
Button mHotelMapButton;
Button mExhibitorButton;
GoogleMapFragment mGoogleMapFragment;
ScaleImageViewFragment mScaleImageViewFragment;
static boolean mShowingGoogleMap = true;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null) {
mShowingGoogleMap = savedInstanceState.getBoolean("showingGoogleMap");
}
mGoogleMapFragment = new GoogleMapFragment();
mScaleImageViewFragment = new ScaleImageViewFragment();
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putBoolean("showingGoogleMap", mShowingGoogleMap);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.maps_fragment, null);
mHotelMapButton = (Button) view.findViewById(R.id.hotel_button);
mExhibitorButton = (Button) view.findViewById(R.id.exhititor_map_button);
mExhibitorButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mShowingGoogleMap = false;
showExhibitorFragment();
}
});
mHotelMapButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mShowingGoogleMap = true;
showGoogleMapFragment();
}
});
return view;
}
@Override
public void onPause() {
super.onPause();
getChildFragmentManager().beginTransaction()
.remove(mGoogleMapFragment)
.remove(mScaleImageViewFragment).commit();
}
@Override
public void onResume() {
super.onResume();
if(mShowingGoogleMap){
showGoogleMapFragment();
}else{
showExhibitorFragment();
}
}
private void showExhibitorFragment(){
getChildFragmentManager().beginTransaction()
.remove(mGoogleMapFragment)
.remove(mScaleImageViewFragment)
.replace(R.id.fragment_placeholder, mScaleImageViewFragment, "scaleImage")
.commit();
}
private void showGoogleMapFragment(){
getChildFragmentManager().beginTransaction()
.remove(mGoogleMapFragment)
.remove(mScaleImageViewFragment)
.replace(R.id.fragment_placeholder, mGoogleMapFragment, "mapFragment")
.commit();
}
}
और मेरे GoogleMapFragment.java फ़ाइल:
यहाँ मेरी MapsFragment.java फ़ाइल है
public class GoogleMapFragment extends Fragment {
private SupportMapFragment mMapFragment;
private GoogleMap mMap;
private final LatLng PLANET_HOLLYWOOD = new LatLng(36.1100, -115.1710);
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
GoogleMapOptions mapOptions = new GoogleMapOptions();
mapOptions.compassEnabled(true).camera(new CameraPosition(PLANET_HOLLYWOOD, 13, 0f, 0f));
mMapFragment = SupportMapFragment.newInstance(mapOptions);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View view = inflater.inflate(R.layout.google_map, container, false);
getChildFragmentManager()
.beginTransaction()
.add(R.id.map_holder, mMapFragment)
.commit();
return view;
}
@Override
public void onPause() {
super.onPause();
getChildFragmentManager().beginTransaction()
.remove(mMapFragment)
.commit();
}
@Override
public void onResume() {
super.onResume();
mMap = mMapFragment.getMap();
if(mMap != null){
mMap.addMarker(new MarkerOptions().position(PLANET_HOLLYWOOD).title("Planet Hollywood"));
}
}
}
मैं यह त्रुटि पता लगाने की कोशिश पिछले कुछ समय से दीवार के खिलाफ मेरे सिर पीटने गया है और इसे कैसे टालना/ठीक करना है।
अद्यतन:
वैसे अगर मैं करने के लिए स्विच: GoogleMapFragment में
getActivity().getSupportFragmentManager()
.beginTransaction()
.add(R.id.map_holder, mMapFragment)
.commit();
तो मैं त्रुटि प्राप्त नहीं है, लेकिन मैं निर्माता स्थापित करने के लिए मानचित्र पर भी नियंत्रण प्राप्त नहीं कर सकते .. । यह एक रेस स्थिति की तरह लगता है
बस उत्कृष्ट! जो एपीआई 16 का उपयोग करना चाहते हैं, नेस्टेडफ्रैगमेंट्स का उपयोग नहीं कर सकते हैं, इसलिए, यह समाधान मेरे मामले में ठीक काम करता है! – Otuyh