Note that there are some explanatory texts on larger screens.

plurals
  1. POjava.lang.IllegalStateException: Activity has been destroyed using fragments
    text
    copied!<p>For two days now I'm trying to solve this problem. I've searched online and on stackoverflow, but I can't find a answer to my question.</p> <p>In my App I'm trying to implement two tabs. One needs to show a map, and in the other tab I will show a list adapter. (using <a href="http://actionbarsherlock.com/" rel="nofollow">ActionBarSherlock</a>)</p> <p>When I click on the second tab and then click back on the first one I get a exception:</p> <blockquote> <p>10-08 01:27:45.203: E/AndroidRuntime(7082): java.lang.IllegalStateException: Activity has been destroyed</p> </blockquote> <p>Here's my activity code and my fragment class. (just for test, I put CustomMapFragment class twice).</p> <pre><code> public class MapActivity extends SherlockFragmentActivity implements LocationListener,TabListener{ LatLng mLocation; GoogleMap map; //CustomMapFragment fragment1 = new CustomMapFragment(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //FragmentManager fm = getSupportFragmentManager(); if (savedInstanceState == null) { setContentView(R.layout.activity_main); FragmentManager fm = getSupportFragmentManager(); setActionBar(); //fragment2 = new Fragment2(); //FragmentTransaction ft = fm.beginTransaction(); //ft.add(R.id.container, fragment1, "frag1"); //ft.add(R.id.fragment_container, fragment2, "frag2"); //ft.commit(); } } private void setActionBar() { ActionBar actionBar = getSupportActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); CustomMapFragment frag1 = new CustomMapFragment(); CustomMapFragment frag2 = new CustomMapFragment(); Tab tab1 = actionBar.newTab() .setText("Frag1") .setTabListener(new NavTabListener(frag1)); actionBar.addTab(tab1); Tab tab2 = actionBar.newTab() .setText("Frag2") .setTabListener(new NavTabListener(frag2)); actionBar.addTab(tab2); } protected class NavTabListener implements ActionBar.TabListener { private Fragment fragment; public NavTabListener(Fragment fragment) { this.fragment = fragment; } public void onTabSelected(Tab tab, FragmentTransaction ft) { ft.replace(R.id.container, fragment); } public void onTabUnselected(Tab tab, FragmentTransaction ft) { FragmentManager fm = getSupportFragmentManager(); ft = fm.beginTransaction(); ft.remove(fragment); ft.commit(); } public void onTabReselected(Tab tab, FragmentTransaction ft) { } } @Override public void onTabSelected(Tab tab, FragmentTransaction ft) { // TODO Auto-generated method stub } @Override public void onTabUnselected(Tab tab, FragmentTransaction ft) { // TODO Auto-generated method stub } @Override public void onTabReselected(Tab tab, FragmentTransaction ft) { // TODO Auto-generated method stub } @Override public void onLocationChanged(Location location) { // TODO Auto-generated method stub } @Override public void onProviderDisabled(String provider) { // TODO Auto-generated method stub } @Override public void onProviderEnabled(String provider) { // TODO Auto-generated method stub } @Override public void onStatusChanged(String provider, int status, Bundle extras) { // TODO Auto-generated method stub } @Override public void onResume() { super.onResume(); } @Override public void onPause() { super.onPause(); } } public class CustomMapFragment extends SherlockFragment{ private SupportMapFragment fragment; private GoogleMap map; public CustomMapFragment(){ super(); } @Override public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ super.onCreate(savedInstanceState); View lView = inflater.inflate(R.layout.map_fragment , null); return lView; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); FragmentManager fm = getChildFragmentManager(); fragment = (SupportMapFragment) fm.findFragmentById(R.id.map); if (fragment == null) { fragment = SupportMapFragment.newInstance(); fm.beginTransaction().replace(R.id.map, fragment).commit(); } } @Override public void onResume() { super.onResume(); if (map == null) { map = fragment.getMap(); map.addMarker(new MarkerOptions().position(new LatLng(0, 0))); } } } </code></pre> <p>Thanks in advance!</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload