2016-04-06 2 views
-2

Я разрабатываю приложение, которое реализует mapsView. У меня есть два действия, которые приводят к активности mapsView. activity_A приведет к активности mapsView, и активность mapsView приведет к активности_B. Я ввожу putExtra() и getBooleanExtra() в свой код.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 деятельности

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), затем нажал ссылку resh в mapsView, mapsView перейдет к заявлению if. Почему он не подходит к оператору else в действиях mapsView? Я не нажимаю buttonNavigasi в activity_B, но я просто нажимаю кнопку «Назад». Что случилось с моим кодом?

Любой ответ будет принята с благодарностью.

Заранее спасибо.

+1

если условие должно быть 'если (! I.getBooleanExtra («карты», ложь))' означает, что если не 'true' затем выполнить, если блок и if true, тогда выполните else block –

+0

. Мой вопрос в том, почему он всегда получает истинное значение, когда я устанавливаю putExtra в значение false? –

+0

Я имею в виду, что ваша кнопка в activity_B устанавливает значение extra в true и начинает новое намерение. Если вы не используете этот код в рассматриваемом вопросе, не публикуйте его. Что делает 'removeAllMarkers'? – zgc7009

ответ

0

Вы, кажется, ожидаете, что getBooleanExtra сравнивает значение со вторым аргументом. Второй аргумент - это значение по умолчанию, которое возвращается, если значение не найдено. getBooleanExtra возвращает false, потому что это значение, которое вы только что установили.

+0

Да, почему он всегда получает истинное значение, когда я устанавливаю putExtra в значение false? –

+1

Если вы достигли блока 'else', он не вернул' true', он вернул 'false'. Это определение оператора if-else. – F43nd1r

+0

Почему? Я инициализирую ложное значение, если условие вроде этого 'if (i.getBooleanExtra (" maps ", false))' –

0

Дубликат Вопрос Вчера был дан ответ мне

http://stackoverflow.com/questions/36430268/putextra-and-getbooleanextra-in-android/36452117#36452117 
Смежные вопросы