2010-06-27 52 views
2

Alice必須回答三個問題。在她回答問題後,她會得到一個列出問題和答案的對話框,並且有一個按鈕可以將答案保存到數據庫中。Android活動設計

現在我認爲設計應該是三個類:主,問題,總結。

主呼叫包含問題1的問題文本的意向問題。 Alice輸入她的答案後,問題通過意向返回給主人的答案。

重複兩次。

然後師父處理問題並通過意向調用摘要。

這種設計在Android中推薦嗎?有沒有可能有這樣一個主要活動。如果是這樣,我如何讓一個正在運行的主人活動來聽取意圖?

回答

2

你所尋找的是startActivityForResult

從屏幕

一個窗口,返回結果它關閉後可以返回結果。這個結果將被傳遞迴調用Activity的onActivityResult()方法,該方法可以提供包含任意數據的Intent以及傳遞給startActivityForResult()的請求代碼。請注意,您必須調用接受請求代碼參數的startActivityForResult()方法才能獲得此回調。以下代碼演示了打開一個新屏幕並檢索結果。

// Open the new screen. 
public void onClick(View v){ 
    // Start the activity whose result we want to retrieve. The 
    // result will come back with request code GET_CODE. 
    Intent intent = new Intent(this, com.example.app.ChooseYourBoxer.class); 
    startActivityForResult(intent, CHOOSE_FIGHTER); 
} 

// Listen for results. 
protected void onActivityResult(int requestCode, int resultCode, Intent data){ 
    // See which child activity is calling us back. 
    switch (resultCode) { 
     case CHOOSE_FIGHTER: 
      // This is the standard resultCode that is sent back if the 
      // activity crashed or didn't doesn't supply an explicit result. 
      if (resultCode == RESULT_CANCELED){ 
       myMessageboxFunction("Fight cancelled"); 
      } 
      else { 
       myFightFunction(data); 
      } 
     default: 
      break; 
    } 
} 



// Class SentResult 
// Temporary screen to let the user choose something. 
    private OnClickListener mLincolnListener = new OnClickListener(){ 
     public void onClick(View v) { 
      Bundle stats = new Bundle(); 
      stats.putString("height","6\'4\""); 
      stats.putString("weight", "190 lbs"); 
      stats.putString("reach", "74\""); 
      setResult(RESULT_OK, "Lincoln", stats); 
      finish(); 
     } 
    }; 

    private OnClickListener mWashingtonListener = new OnClickListener() { 
     public void onClick(View v){ 
      Bundle stats = new Bundle(); 
      stats.putString("height","6\'2\""); 
      stats.putString("weight", "190 lbs"); 
      stats.putString("reach", "73\""); 
      setResult(RESULT_OK, "Washington", Bundle); 
      finish(); 
     } 
    };