2017-09-20 2 views
0

Je suis un didacticiel android de transmission de données entre deux activités en utilisant la méthode startActivityForResult(). L'exemple fonctionne parfaitement. Mais une fois que j'ai entré et passé une valeur pour l'activité principale et que j'essaie à nouveau d'envoyer une nouvelle valeur, cette valeur entrée précédemment est remplacée. Ce que je veux, c'est conserver toutes les valeurs que j'ai entrées et passées à l'activité principale sans disparaître. S'il vous plaît quelqu'un peut-il me guider à travers. J'apprécie votre aide aimable.Utilisation de la méthode startActivityForResult() pour transmettre des données entre des activités Android et conserver ces données

main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center_vertical" 
    android:orientation="vertical"> 

    <TextView 
     android:id="@+id/textViewMessage" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center_horizontal" 
     android:text="Message" 
     android:textColor="#031241" 
     android:textSize="20dp" /> 

    <Button 
     android:id="@+id/button1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="20dp" 
     android:gravity="center_horizontal" 
     android:onClick="getMessage" 
     android:text="Get Message" /> 

</LinearLayout> 

MainActivity.java

public class MainActivity extends AppCompatActivity { 

    TextView textViewMessage; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     // get The reference of The textView 
     textViewMessage = (TextView) findViewById(R.id.textViewMessage); 
    } 

    // Method to handle the Click Event on GetMessage Button 
    public void getMessage(View V) { 
     // Create The Intent and Start The Activity to get The message 
     Intent intentGetMessage = new Intent(this, SecondActivity.class); 
     startActivityForResult(intentGetMessage, 2);// Activity is started with requestCode 2 
    } 

    // Call Back method to get the Message form other Activity 
    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 

     // check if the request code is same as what is passed here it is 2 
     if (requestCode == 2) { 
      if (null != data) { 
       // fetch the message String 
       String message = data.getStringExtra("MESSAGE"); 
       // Set the message string in textView 
       textViewMessage.setText("Message from second Activity: " + message); 
      } 
     } 


    } 
} 

second.Xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center_vertical" 
    android:orientation="vertical" > 

    <EditText 
     android:id="@+id/editTextMessage" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center_horizontal" 
     android:textColor="#000000" 
     android:textSize="20sp" 
     android:hint="Enter The Message" /> 

    <Button 
     android:layout_marginTop="20dp" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center_horizontal" 
     android:text="Submit Message" 
     android:onClick="submitMessage" /> 

</LinearLayout> 

SecondActivity.java

public class SecondActivity extends AppCompatActivity { 

     EditText editTextMessage; 
     @Override 
     protected void onCreate(Bundle savedInstanceState) 
     { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_second); 
      // Get the reference of Edit Text 
      editTextMessage=(EditText)findViewById(R.id.editTextMessage); 
     } 


     public void submitMessage(View V) 
     { 
      // get the Entered message 
      String message=editTextMessage.getText().toString(); 
      Intent intentMessage=new Intent(); 

      // put the message in Intent 
      intentMessage.putExtra("MESSAGE",message); 
      // Set The Result in Intent 
      setResult(2,intentMessage); 
      // finish The activity 
      finish(); 
     } 

} 
+0

puis stocker votre message précédent dans une série ou d'une liste – sumit

+0

@sumit, merci pour la suggestion, pouvez-vous s'il vous plaît fournir un flux de la façon de le faire que je suis tout à fait nouveau android – Kash

Répondre

2

Utilisez ceci:

String[] previousValue = new String[10]; // length of your array 
    int i = 0; 

// Call Back method to get the Message form other Activity 
    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 

     // check if the request code is same as what is passed here it is 2 
     if (requestCode == 2) { 
      if (null != data) { 
       // fetch the message String 
       String message = data.getStringExtra("MESSAGE"); 
       previousValue[i] = message; 
       i++; 
       // Set the message string in textView 
       textViewMessage.setText("Message from second Activity: " + message); 
      } 
     } 


    } 

// alors où vous voulez utiliser les valeurs précédentes itérer juste à travers le réseau.

for(int i = 0; previousValue.length(); i++){ 
//displaying all the previous values 
Log.e("someTag","value : "+previousValue[i]); 
} 
+0

Merci .. Je comprenez ce que vous dites .. Je dois l'utiliser dans les lignes de table avec des vues de texte. Est-ce possible? – Kash

+0

oui vous pouvez simplement utiliser les valeurs indexées avec une ligne particulière – sumit