Sparrow_decoded
Sparrow_decoded

Reputation: 1

Getting wrong information by transffering data from one activity to another using Intent

I'm getting wrong information by transferring data from one activity to another using Intent. Here's my code of First Activity from where I set the value in intent, and the code of Second Activity from where I tried to retrieve the value.

First Activity:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
  return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onContextItemSelected(MenuItem item) {
  switch (item.getItemId()) {
    case R.id.seatAvailabillity:
      Intent i121 = new Intent(Train_Name.this, SeatAvail.class);
      i121.putExtra("EditTextvAlue",trainNumber.getText().toString());
      i121.putExtra("AutoConplete",sourceTxt.getText().toString());
      i121.putExtra("AutoCompleteTextView",destinationTxt.getText().toString());

      startActivity(i121);
      break;
    case R.id.trainFare:
      Intent i123 = new Intent(Train_Name.this, Train_Fare.class);
      i123.putExtra("EditTextvALUE",trainNumber.getText().toString());
      i123.putExtra("AutoConplete1",sourceTxt.getText().toString());
      i123.putExtra("AutoCompleteTextView",destinationTxt.getText().toString());
      i123.putExtra("dateipTxt",dateipTxt.getText().toString());

      startActivity(i123);
      break;
    case R.id.trainRoute:
      Intent intent = new Intent(Train_Name.this,TrainRoute.class);
      trainNumber=(TextView) findViewById(R.id.trainNumberTxt);
      intent.putExtra("",trainNumber.getText().toString());
      startActivity(intent);
      break;
  }
  return true;
}

Second Activity:

    trainRoutList = (ListView) findViewById(R.id.trainRoutList);

    trTxt.setText(getIntent().getExtras().getString(""));
    trTxt.setEnabled(true);
}

Error log:

02-04 20:08:38.464 13919-13919/com.xynderous.sangam.indianrail W/IInputConnectionWrapper: beginBatchEdit on inactive InputConnection
02-04 20:08:38.464 13919-13919/com.xynderous.sangam.indianrail W/IInputConnectionWrapper: endBatchEdit on inactive InputConnection
02-04 20:08:56.054 13919-13919/com.xynderous.sangam.indianrail E/TRAIN_NAME: Starting TrainRoute with TRAIN_NUMBER: android.support.v7.widget.AppCompatTextView{21edeff8 V.ED.... ........ 6,10-91,51 #7f0d00cb app:id/trainNumberTxt}
02-04 20:08:56.094 13919-15993/com.xynderous.sangam.indianrail V/FA: Activity paused, time: 265824017
02-04 20:08:56.104 13919-13919/com.xynderous.sangam.indianrail V/FA: onActivityCreated
02-04 20:08:56.114 13919-13919/com.xynderous.sangam.indianrail I/AppCompatViewInflater: app:theme is now deprecated. Please move to using android:theme instead.
02-04 20:08:56.114 13919-13919/com.xynderous.sangam.indianrail D/TextView: Constructor - Got Res id for appearance for textColorPrimaryInverse
02-04 20:08:56.114 13919-13919/com.xynderous.sangam.indianrail W/ResourceType: Skipping entry 0x7f0c0051 in package table 0 because it is not complex!
02-04 20:08:56.124 13919-13919/com.xynderous.sangam.indianrail D/TextView: Constructor - Got appearance for textColorPrimaryInverse
02-04 20:08:56.124 13919-13919/com.xynderous.sangam.indianrail D/TextView: Constructor -- Got mEditTextBackgroundColor
02-04 20:08:56.134 13919-13919/com.xynderous.sangam.indianrail D/DynamitePackage: Instantiating com.google.android.gms.ads.ChimeraAdManagerCreatorImpl
02-04 20:08:56.144 13919-13919/com.xynderous.sangam.indianrail I/Ads: Starting ad request.
02-04 20:08:56.144 13919-13919/com.xynderous.sangam.indianrail I/Ads: Use AdRequest.Builder.addTestDevice("47628BF8FFA0CAD427FE4BA1FCE8DF4B") to get test ads on this device.
02-04 20:08:56.154 13919-13919/com.xynderous.sangam.indianrail D/DynamitePackage: Instantiating com.google.android.gms.ads.ChimeraAdManagerCreatorImpl
02-04 20:08:56.164 13919-13919/com.xynderous.sangam.indianrail I/Ads: Starting ad request.
02-04 20:08:56.164 13919-13919/com.xynderous.sangam.indianrail I/Ads: Use AdRequest.Builder.addTestDevice("47628BF8FFA0CAD427FE4BA1FCE8DF4B") to get test ads on this device.
02-04 20:08:56.184 13919-15993/com.xynderous.sangam.indianrail V/FA: Activity resumed, time: 265824112
02-04 20:08:56.304 13919-13919/com.xynderous.sangam.indianrail I/ad hight: 0
02-04 20:08:56.374 13919-13919/com.xynderous.sangam.indianrail W/IInputConnectionWrapper: beginBatchEdit on inactive InputConnection
02-04 20:08:56.374 13919-13919/com.xynderous.sangam.indianrail W/IInputConnectionWrapper: endBatchEdit on inactive InputConnection
02-04 20:08:56.384 13919-13926/com.xynderous.sangam.indianrail I/dalvikvm: Could not compile trace for Ljava/util/Arrays;fill, offset 7
02-04 20:08:56.384 13919-13926/com.xynderous.sangam.indianrail I/dalvikvm: ++++++++++++++++++++++++++++++++++++++++++++
02-04 20:08:56.384 13919-13926/com.xynderous.sangam.indianrail I/dalvikvm: JIT_INFO: ME Issues while compiling trace  Ljava/util/Arrays;fill, offset 7
02-04 20:08:56.384 13919-13926/com.xynderous.sangam.indianrail I/dalvikvm:  The trace provoked a spill.
02-04 20:08:56.384 13919-13926/com.xynderous.sangam.indianrail I/dalvikvm: Trying less registerization from 1 to 0

Upvotes: 0

Views: 148

Answers (3)

Mark
Mark

Reputation: 2562

I know English may not be your first language, but your naming conventions are all over the place. Set some standards for yourself and be consistent. These guidelines by Google are a good place to start - https://google.github.io/styleguide/javaguide.html#s5-naming

As to your specific problem, an empty string is never a good idea for a variable/parameter/field name. For parameters being passed between activities, it's best to use a constant to refer to the field names to prevent typos from causing problems.

For example:

public static final String TRAIN_NUMBER = "trainNumber";

Then when you create your intent:

final Intent intent = new new Intent(Train_Name.this, TrainRoute.class);
final TextView trainNumberView = (TextView)findViewById(R.id.trainNumberTxt);
final String trainNumber = trainNumberView.getText().toString();
Log.w(TAG,"Starting TrainRoute with TRAIN_NUMBER: " + String.valueOf(trainNumber));
intent.putExtra(TRAIN_NUMBER,trainNumber);
startActivity(intent);
break;

Then in your activity:

public TrainRoute extends Activity {

   String trainNumber;

   @Override
   public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);

      Intent intent = getIntent();

      if (intent != null && intent.hasExtra(TRAIN_NUMBER)) {
         trainNumber = intent.getStringExtra(TRAIN_NUMBER);
      }
      Log.w(TAG, "Activity started with TRAIN_NUMBER: " + String.valueOf(trainNumber));

      // set your content view, lookup your views
      // eg.,
      // setContentView(...)
      // trTxt = (TextView)findViewById(R.id.trainNumberTxt);

      trainRoutList = (ListView) findViewById(R.id.trainRoutList);

      trTxt.setText(trainNumber);
      trTxt.setEnabled(true);
   }
}

Upvotes: 1

Geo
Geo

Reputation: 756

just use getIntent().getStringExtra() in your second activity while getting string values from Intent

Upvotes: 1

Rosário P. Fernandes
Rosário P. Fernandes

Reputation: 11336

Your extra's TAG can't be an empty String. Change it to something like this:

case R.id.trainRoute:
            Intent intent = new Intent(Train_Name.this,TrainRoute.class);
           trainNumber=(TextView) findViewById(R.id.trainNumberTxt);
            intent.putExtra("trainNumber",trainNumber.getText().toString());
            startActivity(intent);
            break;

And on your second activity:

trTxt.setText(getIntent().getExtras().getString("trainNumber"));

Upvotes: 0

Related Questions