2017-02-03 2 views
0

Ich erhalte falsche Informationen, indem ich Daten mit Intent von einer Aktivität in eine andere übertrage. Hier ist mein Code von First Activity von wo ich den Wert in der Absicht gesetzt, und der Code Second Activity von wo ich versucht, den Wert abzurufen.Ermitteln falscher Informationen durch Übertragen von Daten von einer Aktivität in eine andere mithilfe von Intent

Erste Aktivität:

@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; 
} 

Zweite Aktivität:

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

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

Fehlerprotokoll:

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 
+0

Bitte geben Sie die Ausgabe, die Sie erhalten in der "Second Activity" – ash12

+0

erhalten Daten in falscher Reihenfolge –

+0

Die Reihenfolge der Daten bedeutet nichts. Extras-Parameter sind nicht nach Nummer indiziert, sie sind nach Namen indiziert. Wenn Sie den Extras den falschen Wert geben, erhalten Sie den falschen Wert. Wenn Sie in Ihrem Fall die falsche Aktivität aufrufen, erhalten Sie die falsche Aktivität. Fügen Sie Protokollanweisungen hinzu, um herauszufinden, was passiert. – Mark

Antwort

1

Ich weiß, Englisch nicht Ihre erste Sprache sein kann, aber Ihre Namenskonventionen sind alle über den Ort. Setzen Sie einige Standards für sich selbst und seien Sie konsequent. Diese Richtlinien von Google sind ein guter Anfang - https://google.github.io/styleguide/javaguide.html#s5-naming

In Bezug auf Ihr spezifisches Problem, eine leere Zeichenfolge ist nie eine gute Idee für eine Variable/Parameter/Feldname. Für Parameter, die zwischen Aktivitäten übergeben werden, empfiehlt es sich, eine Konstante zu verwenden, um auf die Feldnamen zu verweisen, um zu verhindern, dass Tippfehler Probleme verursachen.

Zum Beispiel:

public static final String TRAIN_NUMBER = "trainNumber"; 

Dann, wenn Sie Ihre Absicht zu erstellen:

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; 

Dann in Ihrer Tätigkeit.

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); 
    } 
} 
+0

Da Sie scheinbar neu sind, sollte TAG etwas wie 'private statische letzte String TAG = Train_Route.class.getSimpleName();' - verwenden Sie eine andere für jede Aktivität. Zu einem späteren Zeitpunkt, wenn Sie ein wenig mehr Erfahrung haben, möchten Sie vielleicht auf https://github.com/JakeWharton/timber schauen – Mark

0

TAG Ihre Extrakosten kann nicht leer sein. Ändern Sie ihn auf etwas wie folgt aus:

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; 

Und auf dem zweiten Aktivität:

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

funktionierte nicht einmal Sie können in anderen case statement.data nachschauen, in dem ich gerade bin falsche Reihenfolge –

0

nur verwenden getIntent() getStringExtra() in Ihre zweite Aktivität beim Abrufen von Zeichenfolgenwerten aus Intent

Verwandte Themen