У меня есть 2 действия, родительская активность начинается с детской деятельности. Когда мы находимся в Child Activity, пользователь закрывает его с помощью кнопки «Вверх» в меню и возвращается в родительскую активность.My onActivityResult() никогда не называется
Эфирные фрагменты кода:
Родитель (Main) Активность:
protected static final int TIMERCHOOSER_REQUEST = 1;
начиная новую активность (вызывается из меню кнопки):
private void openTimerChooser() {
Intent intent = new Intent(this, TimerChooserActivity.class);
startActivityForResult(intent,TIMERCHOOSER_REQUEST);
}
и для выборки результата :
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode,resultCode,data);
Log.d("Main", "called onActivityResult"); //this and below is never executed
if (requestCode == TIMERCHOOSER_REQUEST) {
switch(resultCode) {
case RESULT_CANCELED:
Log.d("Main", "Intent result was canceled by TIMERCHOOSER");
case RESULT_OK:
//code to handle data from TIMERCHOOSER_REQUEST
Log.d("Main", "accepted resultCode. value: "+resultCode);
String result = data.getStringExtra("result");
Toast toast = Toast.makeText(getApplicationContext(),result,Toast.LENGTH_SHORT);
toast.show();
default:
Log.d("Main", "invalid/unhandled resultCode? value: "+resultCode);
}
}
else
Log.d("Main", "invalid/unhandled requestCode? value: "+requestCode);
}
Детской активность ("TimerChooserActivity"):
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
switch(id) {
case R.id.action_settings:
return true;
case android.R.id.home:
Log.d("TimerChooser", "finishing intent");
Intent returnIntent = new Intent();
returnIntent.putExtra("result", "Some result");
/*if(result == "User activated textview")
setResult(RESULT_OK,returnIntent);
else
setResult(RESULT_CANCELED,returnIntent);*/
setResult(RESULT_OK,returnIntent);
finish();
default:
return super.onOptionsItemSelected(item);
}
}
Вы получаете обратно в родительской (Maint) Активность через главную кнопку/вверх в строке меню/действия. Это работает. Но onActivityResult()
никогда не вызывается, какой бы результат я ни устанавливал.
В моем манифесте тоже нет странного тега. Только стандартные материалы:
android:allowBackup
android:icon
android:label
android:theme
android:name
android:parentActivityName
android:value
Что происходит?
настраиваете вы результат от setResult() метод, когда вы возвращаетесь к ребенку деятельности ...? –
В вашем случае 'android.R.id.home' вы не возвращаете значение, вместо этого вы попадаете в случай по умолчанию. – akodiakson
Что именно вы имеете в виду, возвращаясь к детской активности? Я никогда не получаю результат независимо от того, сколько раз я возвращаюсь к ребенку или к основному действию. Основная деятельность никогда не дает никаких результатов. Мой код - все довольно низкоуровневое, так как я изучаю Android. Я мог бы опубликовать все 2 класса, но я думаю, что это немного перебор. –