2017-08-13 27 views
0

我試圖從意圖onActivityResult()方法,通過一些數據,這是我做的:如何從意圖傳遞extras到onActivityResult()方法?

Intent intent = new Intent(); 
intent.putExtra("STRING", some_data); 
startActivityForResult(intent, 1); 

則:

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    Log.d(TAG, "onActivityResult: " + data.getStringExtra("STRING")); 
    // or 
    Log.d(TAG, "onActivityResult: " + data.getExtras().getString("STRING")); 

} 

但這樣下去給我一個NullPointerException(數據== null),我不明白,我錯過了什麼?

+0

'onActivityResult()'中的'data''Intent'不是''你用'startActivityForResult()'的'Intent'。相反,它是被啓動的活動的'setResult()'使用的'Intent',用來發回結果。 – CommonsWare

+0

謝謝,我現在明白了 –

回答

1

假設你使用startActivityForResult(intent, 1);

你在這個意圖傳遞的數據可在Activity B.

Activity開始Activity B如果你想通過一些數據從後Activity B到Activity A,您必須致電setResult(),然後在活動B中致電finish()。像這樣:

 Intent intent = new Intent(); 
     intent.putExtra("STRING", some_data); 
     setResult(Activity.RESULT_OK, intent); 
     finish(); 

有關更多信息,請參閱here

+0

謝謝你,這工作,因爲我想通過 –