我正在开发一个实现 mapsView 的应用程序。我有两个导致 mapsView Activity 的 Activity 。 activity_A 将导致 mapsView Activity ,而 mapsView Activity 将导致 activity_B。我正在我的代码中实现 putExtra()
和 getBooleanExtra()
。
这是我在 activity_A 中的代码
case R.id.buttonMaps:
Intent i = new Intent(MainActivity.this, MapsActivity.class);
i.putExtra("maps", false);
startActivity(i);
break;
这是我在 activity_B 中的代码
buttonNavigasi.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(DetailActivity.this,MapsActivity.class);
i.putExtra("nama", daftarNama);
i.putExtra("deskripsi", daftarDeskripsi);
i.putExtra("foto", daftarFoto);
i.putExtra("marker", daftarMarker);
i.putExtra("lat", daftarLat);
i.putExtra("lng", daftarLng);
i.putExtra("maps", true);
startActivity(i);
}
});
这是我在 mapsView Activity 中的代码
case R.id.action_refresh:
removeAllMarkers();
if(i.getBooleanExtra("maps", true)) {
mMyMarkersArray.add(new MyMarker(i.getStringExtra("nama"), i.getStringExtra("deskripsi"), i.getStringExtra("foto"), i.getStringExtra("marker"), Double.parseDouble(i.getStringExtra("lat")), Double.parseDouble(i.getStringExtra("lng"))));
UI_HANDLER.postDelayed(UI_UPDATE_RUNNABLE, 500);
}
else {
registerReceiver(mNetworkReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
}
getCurrentLocation();
return true;
问题是当 mapsView 转到 activity_B 并且在 activity_B 中我按下后退按钮(返回 mapsView Activity )然后我按下 mapsView 中的刷新图标时,mapsView 将转到此代码
if(i.getBooleanExtra("maps", true)) {
mMyMarkersArray.add(new MyMarker(i.getStringExtra("nama"), i.getStringExtra("deskripsi"), i.getStringExtra("foto"), i.getStringExtra("marker"), Double.parseDouble(i.getStringExtra("lat")), Double.parseDouble(i.getStringExtra("lng"))));
UI_HANDLER.postDelayed(UI_UPDATE_RUNNABLE, 500);
}
为什么它不转到 mapsView Activity 中的 else
语句?我没有按 activity_B 中的 buttonNavigasi
,但我只是按了后退按钮。我的代码有什么问题?
任何答案将不胜感激。
提前致谢。
最佳答案
当您按下后退按钮时,您之前的 Activity 刚刚恢复
private boolean registerRecr=false;
@Override
protected void onRestart() {
// TODO Auto-generated method stub
super.onRestart();
registerRecr=true;
}
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
}
case R.id.action_refresh:
removeAllMarkers();
if(i.getBooleanExtra("maps", true)&& registerRecr==false) {
mMyMarkersArray.add(new MyMarker(i.getStringExtra("nama"), i.getStringExtra("deskripsi"), i.getStringExtra("foto"), i.getStringExtra("marker"), Double.parseDouble(i.getStringExtra("lat")), Double.parseDouble(i.getStringExtra("lng"))));
UI_HANDLER.postDelayed(UI_UPDATE_RUNNABLE, 500);
}
else {
registerReceiver(mNetworkReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
}
getCurrentLocation();
return true;
关于java - android 中的 putExtra() 和 getBooleanExtra(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36430268/