2011-09-09 100 views
0

KitActivity:onActivityResult不會被調用

/** in KitActivity, handler invoked after successful transmission **/ 
private final Handler txHandle = new Handler() { 
    @Override 
    public void handleMessage(Message msg) { 
     boolean success = msg.getData().getBoolean("success"); 
     dismissDialog(DIALOG_TX_PROGRESS); 
     if(success) { 
      SharedPreferences.Editor editor = mPrefs.edit(); 
      editor.putInt("previous_scale", mScaleSpn.getSelectedItemPosition()); 
      editor.commit(); 
      //clearFields(); 
      //showDialog(DIALOG_ETX); 
      KitActivity.this.setResult(0); 
      KitActivity.this.finish(); 
     } else { 
      removeDialog(DIALOG_FAIL); 
      showDialog(DIALOG_FAIL); 
     } 

    } 
}; 

MainActivity:

/** in the MainActivity **/ 
public void startCreateKit() { 
    Intent i = new Intent(MainActivity.this, KitActivity.class); 
    startActivityForResult(i,0); 
} 

protected void onActivityResult(int reqCode, int resCode) { 
    if(reqCode==0) { 
     if(resCode==0) { 
      //we good, perform sync 
      showDialog(DIALOG_TX_PROGRESS); 
      Toast.makeText(this, "Performing Auto Sync", Toast.LENGTH_LONG).show(); 
      updateKits(); 
     } else { 
      //uh oh 
     } 
    } 
} 

createKitBtn.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      //Toast.makeText(context, "NEW KIT", Toast.LENGTH_SHORT).show(); 
      startCreateKit(); 
     } 
    }); 

onActivityResult永遠不會在MainActivity調用。這本書很相似。有什麼問題?

我試過的東西: - 使用Activity.RESULT_OK作爲結果代碼(轉換爲-1); - 從處理程序中移除setResult()和finish()調用並調用外部方法來調用它們。

我沒有看到任何錯誤。這裏的清單,這裏沒有任何錯誤:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.conceptualsystems.kitmobile" 
     android:versionCode="8" 
     android:versionName="@string/version"> 
    <application android:label="@string/app_name" android:icon="@drawable/icon" android:debuggable="true"> 
     <activity android:name="MainActivity" 
        android:label="@string/app_name" 
        android:screenOrientation="portrait" 
        android:configChanges="keyboardHidden|orientation"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity android:name="ShipActivity" 
        android:label="Ship Kits" 
        android:screenOrientation="portrait" 
        android:configChanges="keyboardHidden|orientation"> 
     </activity> 
     <activity android:name="KitActivity" 
        android:label="Kit Entry" 
        android:screenOrientation="portrait" 
        android:configChanges="keyboardHidden|orientation"> 
     </activity> 
     <activity android:name="ColorActivity" 
        android:label="Color Selection" 
        android:screenOrientation="portrait" 
        android:configChanges="keyboardHidden|orientation"> 
     </activity> 
    </application> 
    <uses-sdk android:minSdkVersion="8" /> 
    <uses-permission android:name="android.permission.INTERNET"/> 
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
</manifest> 

什麼給?

回答

0

代替:

protected void onActivityResult(int reqCode, int resCode) 

有:

protected void onActivityResult(int reqCode, int resCode, Intent intent) 

當您查看文檔時會發生什麼... -_-

1
在活動

啓動(KitActivity.class)成功你這樣做

Intent intent = this.getIntent(); 
intent.putExtra("SOMETHING", "EXTRAS"); 
this.setResult(RESULT_OK, intent); 
finish(); 

否則你把RESULT_CANCELED代替RESULT_OK