Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android getBooleanExtra()始终获取真值_Android_Android Intent - Fatal编程技术网

Android getBooleanExtra()始终获取真值

Android getBooleanExtra()始终获取真值,android,android-intent,Android,Android Intent,我正在开发一个实现mapsView的应用程序。我有两个活动可以引导mapsView活动。活动A将导致mapsView活动,mapsView活动将导致活动B。我正在代码中实现putExtra和getBooleanExtra 这是我在活动A中的代码 case R.id.buttonMaps: Intent i = new Intent(MainActivity.this, MapsActivity.class); i.putExtra("maps", false); star

我正在开发一个实现mapsView的应用程序。我有两个活动可以引导mapsView活动。活动A将导致mapsView活动,mapsView活动将导致活动B。我正在代码中实现putExtra和getBooleanExtra

这是我在活动A中的代码

case R.id.buttonMaps:
    Intent i = new Intent(MainActivity.this, MapsActivity.class);
    i.putExtra("maps", false);
    startActivity(i);
break;
这是我在活动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活动中的代码

    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转到活动_B,在活动_B中,我按下后退按钮返回mapsView活动,然后在mapsView中按下刷新图标时,mapsView将转到if语句。为什么不转到mapsView活动中的else语句?我没有按活动B中的按钮nNavigasi,但我只按了后退按钮。我的代码怎么了

任何答复都将不胜感激


提前感谢。

您似乎希望getBooleanExtra将值与第二个参数进行比较。第二个参数是默认值,如果找不到该值,则返回该值。getBooleanExtra返回false,因为这是您刚才在那里设置的值。

if条件应为if!i、 getBooleanExtramaps,false表示不为true时执行if block,如果为true时执行else block我的问题是,当我将putExtra设置为false值时,为什么它总是获得true值?我的意思是,活动B中的按钮正在将extra设置为true并开始新的意图。如果您在问题中没有使用该代码,请不要发布它。removeAllMarkers做什么?是的,为什么当我将putExtra设置为false值时它总是得到true值?如果到达else块,它没有返回true,它返回false。这就是if-else语句的定义。为什么?我在像ifi.getBooleanExtramaps这样的if条件下初始化了false值,false您误解了基本java语法。请后退一步,了解java中的基本条件语句。您能花点时间在这个链接中查看我的问题吗