单击AndId Back按钮后包含两个片段的java销毁活动
问题解决了
问题: 我有问题,我找不到任何解决办法。我有一个活动,它包含两个片段。这两个片段都显示了google maps v2,我通过两个ActionBar标签在屏幕上显示它们
当我想回到之前的活动时,问题就出现了。当我点击安卓后退按钮时,我的整个应用程序都关闭了,显示我的应用程序被停止了
我应该向代码中添加什么来删除此错误
解决方案:
地图和你的活动。爪哇
import 安卓.app.ActionBar;
import 安卓.app.Activity;
import 安卓.app.Fragment;
import 安卓.app.FragmentManager;
import 安卓.app.FragmentTransaction;
import 安卓.os.Bundle;
import 安卓.util.Log;
import 安卓.widget.Button;
import com.google.安卓.gms.maps.MapFragment;
public class Maps_Activity extends Activity {
public static FragmentManager manager;
Fragment fragmentTab1 = new Medical_Shops_Map();
Fragment fragmentTab2 = new Medical_Clicnics_Map();
Button Medical_Shops_Button, Medical_Clinics_Button;
ActionBar actionBar ;
@Override
public void onCreate(Bundle arg0) {
super.onCreate(arg0);
setContentView(R.layout.activity_maps_);
manager = getFragmentManager();
actionBar=getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
ActionBar.Tab tab1=actionBar.newTab();
tab1.setText("Apteki 24H/7");
tab1.setTabListener(new MyTabsListener(fragmentTab1));
ActionBar.Tab tab2=actionBar.newTab();
tab2.setText("Przychodnie Lekarskie");
tab2.setTabListener(new MyTabsListener(fragmentTab2));
actionBar.addTab(tab1);
actionBar.addTab(tab2);
}
protected class MyTabsListener implements ActionBar.TabListener {
private Fragment fragment;
public MyTabsListener(Fragment fragment) {
this.fragment = fragment;
}
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {
}
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
ft = manager.beginTransaction();
ft.replace(R.id.map_container, fragment);
ft.commit();
Log.e("Activity", "Fragment replace");
}
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {
// some people needed this line as well to make it work:
MapFragment mMap2 = ((MapFragment) Maps_Activity.manager.findFragmentById(R.id.map));
ft = manager.beginTransaction();
if(mMap2!=null)
{
ft.remove(mMap2);
ft.commit();
Log.e("Activity", "Mapa_fragment destroy");
}
else
{
MapFragment mMap1 = ((MapFragment) Maps_Activity.manager.findFragmentById(R.id.map1));
ft.remove(mMap1);
ft.commit();
Log.e("Activity", "Mapa_fragment2 destroy");
}
}
}
}
其中一个片段:
import 安卓.os.Bundle;
import 安卓.app.Fragment;
import 安卓.support.v4.app.FragmentActivity;
import 安卓.util.Log;
import 安卓.view.LayoutInflater;
import 安卓.view.View;
import 安卓.view.ViewGroup;
import 安卓.widget.LinearLayout;
import 安卓.widget.Toast;
import com.google.安卓.gms.maps.CameraUpdateFactory;
import com.google.安卓.gms.maps.GoogleMap;
import com.google.安卓.gms.maps.GoogleMapOptions;
import com.google.安卓.gms.maps.MapFragment;
import com.google.安卓.gms.maps.OnMapReadyCallback;
import com.google.安卓.gms.maps.model.LatLng;
import com.google.安卓.gms.maps.model.MarkerOptions;
public class Medical_Clicnics_Map extends Fragment implements OnMapReadyCallback {
private static View view;
private static GoogleMap mMap2;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.medical__clicnics__map, container, false);
setUpMapIfNeeded();
return view;
}
public void setUpMapIfNeeded() {
MapFragment mMap2 = ((MapFragment) Maps_Activity.manager
.findFragmentById(R.id.map1));
mMap2.getMapAsync(Medical_Clicnics_Map.this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
Log.d("Activity", "Map ready");
googleMap.setMyLocationEnabled(true);
LatLng sydney = new LatLng(-33.867, 151.206);
googleMap.addMarker(new MarkerOptions()
.title("Sydney")
.snippet("The most populous city in Australia.")
.position(sydney));
}
}
也许这段代码对某些人会有帮助;)
共 (0) 个答案