java - Sending Multiple Intents from a Single Activity to Another Activity -


i new android, , trying send user-inputted data (their names) activity. have in past been able send single lines between activities using intents, have not been able work out how send 2 different strings 2 different textviews.

here code mainactivity far:

package com.example.game;  import android.content.intent; import android.os.bundle; import android.app.activity; import android.view.menu; import android.widget.button; import android.widget.edittext; import android.view.view; import android.widget.autocompletetextview;  public class mainactivity extends activity { public final static string extra_message = "com.example.myfirstapp.message"; @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_main);     button button = (button)findviewbyid(r.id.button);     button.setonclicklistener(new view.onclicklistener() {         @override         public void onclick(view view) {             sendnames();             sendnames2();         }     }); }   @override public boolean oncreateoptionsmenu(menu menu) {     // inflate menu; adds items action bar if present.     getmenuinflater().inflate(r.menu.main, menu);     return true; } public void sendnames() {     //sends player1's name maingame     intent intent = new intent (this, maingame.class);     edittext player1 = (edittext) findviewbyid(r.id.player1);     string message = player1.gettext().tostring();     intent.putextra(extra_message, message);     startactivity(intent); }//sends player2's name maingame  public void sendnames2(){     intent intent2 = new intent(this, maingame.class);     edittext player2 = (edittext) findviewbyid(r.id.player2);     string message2 = player2.gettext().tostring();     intent2.putextra(extra_message, message2);     startactivity(intent2); } } 

code second activity, maingame:

package com.example.game;  import android.content.intent; import android.os.bundle; import android.app.activity; import android.view.menu; import android.annotation.suppresslint; import android.view.menuitem; import android.support.v4.app.navutils; import android.annotation.targetapi; import android.os.build; import android.widget.textview;  public class maingame extends activity { @suppresslint("newapi") @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_game);     //retrives player1's name     intent intent = getintent();     string message = intent.getstringextra(mainactivity.extra_message);     textview name1 = (textview) findviewbyid(r.id.name1);     name1.settext(message);     //retrivews player2's name     intent intent2 = getintent();     string message2 = intent2.getstringextra(mainactivity.extra_message);     textview name2 = (textview) findviewbyid(r.id.name2);     name2.settext(message2);      if (build.version.sdk_int >= build.version_codes.honeycomb) {         getactionbar().setdisplayhomeasupenabled(true);     }  }         return super.onoptionsitemselected(item); }  } 

when run this, whatever has been put in 'name2' in both textviews. need change this?

when run whatever has been put in 'name2' in both textview's

this because creating new instance of activity second intent. there different ways it. 1 create single intent member variable, instantiate in first function call, add extras, add other in second method, , call startactivity there.

but easier , more readable @ same time.

 public void sendnames() {     //sends player1's name maingame     intent intent = new intent (this, maingame.class);     edittext player1 = (edittext) findviewbyid(r.id.player1);     string player1name= player1.gettext().tostring();     intent.putextra("player1name", message);     edittext player2 = (edittext) findviewbyid(r.id.player2);     string player2name= player2.gettext().tostring();     intent2.putextra("player2name", player2name);     startactivity(intent); 

and call 1 method.

then

intent intent = getintent(); string name1 = intent.getstringextra("player1name"); textview name1 = (textview) findviewbyid(r.id.name1); name1.settext(message);  string name1 = intent2.getstringextra("player2name"); textview name2 = (textview) findviewbyid(r.id.name2); name2.settext(name1 ; 

Comments

Popular posts from this blog

ios - UICollectionView Self Sizing Cells with Auto Layout -

node.js - ldapjs - write after end error -

DOM Manipulation in Wordpress (and elsewhere) using php -