2

我是一位經驗豐富的java程序員,在Android開發中邁出了第一步。我的問題很簡單,我的onActivityResult()沒有在主要活動中執行。這是我做的。onActivityResult()沒有得到在android中執行

在MainActivity的onCreate方法,

Intent intent = new Intent(MainActivity.this, NewScreen.class); 

    startActivityForResult(intent,RESULT_OK); 

我做了覆蓋MainActivity的onActivityResult方法,

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

     Log.d("Debug", "Received"); 
    } 
在NewScreen活動

Intent intent = new Intent(NewScreen.this, MainActivity.class); 

this.setResult(RESULT_OK,intent); 

Log.d("Debug", "Setting the Result"); 

finish(); 

我的清單文件

<application android:icon="@drawable/icon" android:label="@string/app_name"> 
    <activity android:name=".MainActivity" 
       android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name="NewScreen"></activity> 

</application> 

我已閱讀每個論壇,並嘗試了一切。請幫助我們。

由於提前,

回答

4

在NewScreen活動,請嘗試使用默認(參數)構造函數的意圖......

Intent intent = new Intent(); 

setResult(RESULT_OK,intent); 

Log.d("Debug", "Setting the Result"); 

finish(); 

編輯:另外,「請求代碼」你發送到活動可能是因爲比其他RESULT_OK一些值,例如破越好..

startActivityForResult(intent, 1234); 
+0

是的,你是對的。結果代碼是問題。謝謝。 – bhargavg

1

你確定它沒有得到CAL LED。嘗試打印結果代碼。如果其爲零,那可能意味着結果被取消,給你一種錯覺,即該方法實際上什麼都不做。

+0

我解決了它,結果代碼是問題。 – bhargavg

+0

你是如何解決它的?我的結果代碼爲零,意圖爲零。謝謝 – Eenvincible

5

您使用RESULT_OK作爲請求代碼。 RESULT_OK的值爲負數(實際上爲-1)。這就是爲什麼你沒有收到NewScreen活動的結果。如果你看看文檔requestCode argument,它說:

requestCode如果> = 0,這個代碼將在onActivityResult()返回的活性退出時。

因此,您應該定義您的非負面請求代碼並將其用於startActivityForResult。這裏是例子:

public class MainActivity extends Activity 
{ 

    static final int REQUEST_CODE = 13; 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     //...    

     Intent intent = new Intent(MainActivity.this, NewScreen.class); 
     startActivityForResult(intent, REQUEST_CODE); 
    } 
} 
+0

Bravo!有效。感謝您的幫助... – bhargavg

+0

其實這個問題的關鍵在[startActivityForResult()']的文檔中說明(http://developer.android.com/reference/android/app/Activity.html#startActivityForResult( android.content.Intent,%20int)):「使用負的requestCode與調用startActivity(Intent)相同(活動不作爲子活動啓動)」。 –