0
我有2個活動,父活動啓動子活動。當我們在Child Activity中時,用戶通過菜單中的「Up」按鈕關閉它,並返回到Parent Activity。我的onActivityResult()永遠不會被調用
基本代碼片斷:
父(主)的活動:
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個課程,但我認爲這有點矯枉過正。 –