2013-07-26 17 views
1

我有兩個項目:一個Android主項目和一個Android庫。在Android庫中,我使用Asynctasks和來自onPostExecute的數據,我希望能夠發送到導入此庫的Android項目。在這種情況下,主項目是一個小部件應用程序,但這應該與我認爲不相關。 我想在我的主項目中使用onActivityResult,但它似乎是一個壞主意。從位於Android庫的AsyncTask發送數據以投影Android AppWidgetProvider

這是我如何調用,在主項目我的圖書館:

Intent libraryIntent = new Intent(context, ComplicatedRequest.class); 
libraryIntent.addFlags(Intent. FLAG_ACTIVITY_NEW_TASK); 
context.startActivity(libraryIntent); 

在我的庫項目,在onPostExecute方法,我不知道如何從那裏發送數據回我的應用程序。我幾乎肯定這是一個微不足道的問題,但我寧可問,然後實施一個相當糟糕的實踐解決方案。謝謝。

回答

0

使用startActivityForResult(參見http://developer.android.com/reference/android/app/Activity.html)(例如,從官方文檔):

public class MyActivity extends Activity { 
    static final int PICK_CONTACT_REQUEST = 0; 

    protected boolean onKeyDown(int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) { 
      // When the user center presses, let them pick a contact. 
      startActivityForResult(
       new Intent(Intent.ACTION_PICK, new Uri("content://contacts")), PICK_CONTACT_REQUEST); 
      return true; 
     } 
     return false; 
    } 

    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (requestCode == PICK_CONTACT_REQUEST) { 
      if (resultCode == RESULT_OK) { 
       // A contact was picked. Here we will just display it to the user. 
       startActivity(new Intent(Intent.ACTION_VIEW, data)); 
      } 
     } 
    } 
} 

(如果需要或其他類型)你可以通過data.getStringExtra(字符串名稱)檢索值。

0
Use Intent and IntentFilter(Manifest) 
<i> 
Intent intent = new Intent(); 
intent.setAction(MY_ACTION); 
intent.put("key", value); 
context.startActivity(intent); 
</i> 

In Activity 
<i> 
String s = intent.getExtra().getString("key"); 
</i>