2010-06-27 6 views
2

Alice doit répondre à trois questions. Après avoir répondu aux questions, elle obtient un dialogue qui liste la question et les réponses et il y a un bouton pour enregistrer les réponses à une base de données. À l'heure actuelle, je pense que le design devrait être de trois classes: Master, Question, Summary. Appels principaux Question avec une intention qui inclut le texte de la question 1. Après qu'Alice a saisi sa réponse, la Question renvoie la réponse au maître via une intention.Conception de l'activité android

Répétez deux fois.

Ensuite, Maître effectue le traitement des questions et appelle Résumé via une intention.

Ce type de conception est-il recommandé sur Android? Est-il possible d'avoir une telle activité de Maître? Si oui, comment puis-je autoriser une activité principale en cours d'exécution à écouter les intentions?

Répondre

2

Ce que vous recherchez est startActivityForResult

retourner un résultat d'un écran

Une fenêtre peut renvoyer un résultat après sa fermeture. Ce résultat sera retransmis dans la méthode onActivityResult() de l'appel, qui peut fournir un Intent contenant des données arbitraires, ainsi que le code de requête transmis à startActivityForResult(). Notez que vous devez appeler la méthode startActivityForResult() qui accepte un paramètre de code de requête pour obtenir ce rappel. Le code suivant montre l'ouverture d'un nouvel écran et la récupération d'un résultat.

// 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(); 
     } 
    };