Mr. Pivirotto
Mr. Pivirotto

Reputation: 281

How do i send multiple Integers to a new activity?

I have a way that I know is not the best way of sending them over rite now but I'm sending them as strings and converting them to an Int on the reciver side, the problem is when I do the conversion it crashes on my phone. This is what I have on my sender side:

    public void sendMessage(View view) {
    // Do something in response to button
    Intent intent = new Intent(this, PayTracker.class);
    // hourly wage send
    EditText editText = (EditText) findViewById(R.id.hourly_wage);
    String message1 = editText.getText().toString();
    intent.putExtra(MESSAGE_1, message1);
    // ot wage send
    EditText editText1 = (EditText) findViewById(R.id.ot_wage);
    String message2 = editText1.getText().toString();
    intent.putExtra(MESSAGE_2, message2);
    // hours per day send
    EditText editText2 = (EditText) findViewById(R.id.hours_day);
    String message3 = editText2.getText().toString();
    intent.putExtra(MESSAGE_3, message3);
    // start new activity
    startActivity(intent);

And this is what is on my reciving side:

    @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_pay_tracker);
    getActionBar().setDisplayHomeAsUpEnabled(true);
    // Receive messages from options page
    Intent intent = getIntent();
    String message1 = intent.getStringExtra(Options.MESSAGE_1);
    String message2 = intent.getStringExtra(Options.MESSAGE_2);
    String message3 = intent.getStringExtra(Options.MESSAGE_3);
    // convert string to integer
    int HW = Integer.valueOf(message1);
    int OTW = Integer.valueOf(message2);
    int HPD = Integer.valueOf(message3);

Ive tested everything and its the conversion that is causing the app to crash, i was hoping somebody could help me make it not crash or give me a whole new way sending an int to my second activity insted of sending a string and converting it. Thank you!

=======================================================================

Here is my new code with all your help!

Sending:

    public void sendMessage(View view) {
    // Do something in response to button
    Intent intent = new Intent(this, PayTracker.class);
    // Gather text from text boxes
    EditText editText = (EditText) findViewById(R.id.hourly_wage);
    EditText editText1 = (EditText) findViewById(R.id.ot_wage);
    EditText editText2 = (EditText) findViewById(R.id.hours_day);
    //Create String from text
    String message1 = editText.getText().toString();
    String message2 = editText1.getText().toString();
    String message3 = editText2.getText().toString();
    //Convert String to Int
    int HW = 0, OTW = 0, HPD = 0;
    try{
        HW = Integer.valueOf(message1);
        OTW = Integer.valueOf(message2);
        HPD = Integer.valueOf(message3);
    }
    catch(NumberFormatException nfe){
        //do something else here
        //for e.g. initializing default values to your int variables
    }
    // Send Integers to PayTracker.java
    intent.putExtra(MESSAGE_HW, HW);
    intent.putExtra(MESSAGE_OTW, OTW);
    intent.putExtra(MESSAGE_HPD, HPD);
    // start new activity
    startActivity(intent);
}

Receiving side:

    @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_pay_tracker);
    getActionBar().setDisplayHomeAsUpEnabled(true);
    // Receive messages from options page
    Intent intent = getIntent();
    int HW = intent.getIntExtra(Options.MESSAGE_HW, 0);
    int OTW = intent.getIntExtra(Options.MESSAGE_OTW, 0);
    int HPD = intent.getIntExtra(Options.MESSAGE_HPD, 0);
    // set textview
    TextView textView = (TextView) this.findViewById(R.id.yourpay);
    textView.setText(String.valueOf(HW));
}

Upvotes: 3

Views: 3259

Answers (5)

waqaslam
waqaslam

Reputation: 68177

Encapsulate the conversion part within try/catch block, because your strings may not be convertible into integer values.

int HW, OTW, HPD;

try{
    HW = Integer.valueOf(message1);
    OTW = Integer.valueOf(message2);
    HPD = Integer.valueOf(message3);
}
catch(NumberFormatException nfe){
    //do something else here
    //for e.g. initializing default values to your int variables
}

*Or more appropriately, pass the integer values in your sending part and receive them as it is.

Upvotes: 0

vinothp
vinothp

Reputation: 10059

You can achieve your goal using following code

In Your Calling Activity

         Intent value = new Intent(YourCallingActivity.this,DestinationActivity.class);
         value.putExtra("integerone", integeronevalue);
         value.putExtra("integertwo", integertwovalue);
         value.putExtra("integerthree", integertwovalue);
         startActivity(value);

In Destination Activity

        int integerone = getIntent().getExtras().getInt("integerone");
        int integertwo = getIntent().getExtras().getInt("integertwo");
        int integerthree = getIntent().getExtras().getInt("integerthree");

Hope it helps

Upvotes: 0

Jason L
Jason L

Reputation: 1822

You don't need to pass Integers as Strings to be converted back in the receiving Activity. Intents can hold Integers as well as Strings.

Simply add your data like you normally would:

int foo = 5;
Intent intent = new Intent(this, bar.class);
intent.putExtra("foobar", foo);

And then retrieve your int from the intent in the receiving Activity as follows.

Intent intent = getIntent();
int foo = intent.getIntExtra("foobar", 0);

Intents can hold more data than just Strings. In fact, take a look at the documentation. You can see that Intents can hold Longs, Doubles, Floats, Parcelables, etc.

Upvotes: 4

rosu alin
rosu alin

Reputation: 5830

Try something like this on the send side:

 String message1 = editText.getText().toString();   
 intent.putExtra("MESSAGE_1", message1);
 String message2 = editText1.getText().toString();
 intent.putExtra("MESSAGE_2", message2);
 String message3 = editText2.getText().toString();
 intent.putExtra("MESSAGE_3", message3);

Receive side:

  if (getIntent() != null) {
    if (getIntent().getExtras() != null) {
        String mess1 = getIntent().getExtras().getString("MESSAGE_1"); 
        String mess2 = getIntent().getExtras().getString("MESSAGE_2"); 
        String mess3 = getIntent().getExtras().getString("MESSAGE_3"); 
      }
 }

Upvotes: 0

NagarjunaReddy
NagarjunaReddy

Reputation: 8645

Pass data from one activity to another activity "String" value.useing intent

Activityone

Intent intent = new Intent(Activityone.this,Activitytwo.class)
intent.putExtra("TYPE", type);
startActivity(intent); 

Activitytwo

Intent intent =getIntent();
Receivevalue =intent.getExtras().getString("TYPE");
(OR)
Receivevalue = getIntent().getExtras().getString("TYPE");

Pass data from one activity to another activity "Integer" value.useing intent

Activityone

Intent intent = new Intent(Activityone.this,Activitytwo.class)
intent.putExtra("TYPE", type);
startActivity(intent); 

Activitytwo

Intent intent = getIntent();
value = intent.getIntExtra("TYPE", 0);     
// Type = intent.getIntExtra(name, defaultValue);

Upvotes: 0

Related Questions