У меня есть class
, который расширяет AppCompatActivity
. В рамках этого действия я делаю два разных вызова двух методов startActivityForResult
, которые привязаны к двум прослушивателям кнопок. Первый вызывает намерение камеры следующим образом:
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_REQUEST);
а второй вызывает другой AppCompatActivity
, который содержит Google Map, а именно:
Intent getLatLongIntent = new Intent(Form.this, MapsLatLongActivity.class);
startActivityForResult(getLatLongIntent, LATLONG_REQUEST);
Первый startActivityForResult
работает нормально, и я могу манипулировать ответом от намерения камеры в методе onActivityResult
. Что вызывает недоумение, так это то, что тот же onActivityResult
не срабатывает, когда я закрываю дочернюю активность второго вызова, используя этот код:
Intent intent = new Intent();
intent.putExtra("brdgHouseLat", latitude);
intent.putExtra("brdgHouseLong", longitude);
setResult(RESULT_OK, intent);
finish();
Ниже приведен мой код для метода onActivityResult
:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == CAMERA_REQUEST && resultCode == Activity.RESULT_OK) {
Bitmap photo = (Bitmap) data.getExtras().get("data");
himgres.setImageBitmap(photo);
} else if (requestCode == LATLONG_REQUEST && resultCode == Activity.RESULT_OK) {
latitude = data.getDoubleExtra("brdgHouseLat", 0);
longitude = data.getDoubleExtra("brdgHouseLong", 0);
Log.v(TAG, "and form has a lat = " + latitude);
Log.v(TAG, "and a long = " + longitude);
}
}
Излишне говорить, что я искал решения по этому поводу и проверил свой манифест (я не устанавливал никаких флагов); фрагменты (здесь фрагментов нет) и т. д.
Я начинаю думать, что, возможно, SharedPreferences
будет лучшим вариантом, но я просто озадачен непоследовательностью ответов. Любая помощь будет оценена
================================================== ======================= Вот три метода второго действия, относящиеся к этому вопросу:
@Override
public void onBackPressed() {
super.onBackPressed();
packLatLong();
}
@Override
public boolean onOptionsItemSelected(MenuItem menuItem) {
switch (menuItem.getItemId()) {
case android.R.id.home: {
packLatLong();
}
}
return (super.onOptionsItemSelected(menuItem));
}
private void packLatLong() {
if (latitude != 0 && longitude != 0) {
Log.v(TAG, "packing this lat = " + latitude);
Log.v(TAG, "packing this long = " + longitude);
Intent intent = new Intent();
intent.putExtra("brdgHouseLat", latitude);
intent.putExtra("brdgHouseLong", longitude);
setResult(RESULT_OK, intent);
finish();
}
}
Обратите внимание, что нажатие кнопки «Назад» или кнопки «Домой» на панели действий запускает метод packLatLong
.
brdgHouseLat
- person Pavneet_Singh   schedule 06.11.2017intent.putExtra("brdgHouseLat", latitude);
- person Pavneet_Singh   schedule 06.11.2017