2017-05-02 3 views
0

Ich weiß nicht warum, aber das NICHT arbeiten und ich denke, dass es sollte. Pass-Daten in mainAcitivity:Fehler beim Übermitteln von Daten zwischen Aktivitäten

@Override 
     public void onClick(View v) { 
      Intent intent = new Intent(v.getContext(), MapActivity.class); 
      intent.putExtra(MapActivity.LATITUDE_EXTRA_KEY, latitude); 
      intent.putExtra(MapActivity.LONGITUDE_EXTRA_KEY, longitude); 
      v.getContext().startActivity(intent); 
     } 

als Daten in der zweiten Aktivität erhalten

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

    Intent intent = getIntent(); 
    if (intent != null) { 
     mLat = intent.getLongExtra(LATITUDE_EXTRA_KEY, mLat); 
     mLong = intent.getLongExtra(LONGITUDE_EXTRA_KEY, mLong); 
    } 
} 

Was soll ich verpasst?

Antwort

0

Oh, ich bin stumm und blind :(vorbei Doppel und Lese lange. putExtra diese Art Mismatch versteckt hat.

0

Sie müssen v.getContext() mit YourActivity.this oder mit der Methode getApplicationContext() ändern. Wenn Sie ein Fragment verwenden, verwenden Sie bitte getActivity() Methode. Und in Ihrer onClick Methode verwenden Sie bitte startActivity(intent); anstelle von .

Ich hoffe, es hilft.

+0

auch keine Notwendigkeit, das zu tun, einfach 'startActivity (Absicht)' gut funktionieren würde. –

+0

@Alex Thx für schnelle Antwort, ich habe bereits gefunden, was mein Problem verursacht. v.getContext ist in Ordnung, da es in onClick ist, wo ** v ** angeklickt ist. – ThinkDeep

+0

Wurde das Problem durch eines der oben genannten Probleme verursacht? –

0

nach dem Code für einige Sekunden zu analysieren, fand ich endlich das Problem. Sie Versuchen Sie, Konstanten (MapActivity.LONGITUDE_EXTRA_KEY, MapActivity.LATITUDE_EXTRA_KEY) in einer Aktivität zu verwenden, die Sie nicht in einer bereits erstellten Aktivität erstellt haben.Hier ist die Lösung, verschieben Sie alle Ihre Konstanten auf die erste Aktivität, und ändern Sie den Code in Ihrer onClick Methode zu diesem:

Intent intent = new Intent(v.getContext(), MapActivity.class); 
      intent.putExtra(LATITUDE_EXTRA_KEY, latitude); 
      intent.putExtra(LONGITUDE_EXTRA_KEY, longitude); 
      v.getContext().startActivity(intent); 

Und Ihre MapActivity dieser onCreate() -Methode dies:

Intent intent = getIntent(); 
    if (intent != null) { 
     mLat = intent.getDoubleExtra(FirstActivity.LATITUDE_EXTRA_KEY, mLat); 
     mLong = intent.getDoubleExtra(FirstActivity.LONGITUDE_EXTRA_KEY, mLong); 

die erste Aktivität ist die Aktivität, die sowohl auf die Schaltfläche und Ihre Konstanten gehostet wird. Hoffe, dass es hilft

+0

Nein, ** psfs **. – ThinkDeep

+0

Okay, was bedeutet das psfs? – DevMike

+0

** public static final String ** versuche es zu schreiben Android Studio – ThinkDeep

0

Ich denke, Sie double Werte von MainActivity sind vorbei und versuchen long Werte von Intent in MapActivity zu erhalten und dieses Problem verursachen kann.

Aktualisieren Sie Ihre MapActivity, onCreate() Methode wie folgt:

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

    Intent intent = getIntent(); 
    if (intent != null) { 
     mLat = intent.getDoubleExtra(LATITUDE_EXTRA_KEY, 0.0f); 
     mLong = intent.getDoubleExtra(LONGITUDE_EXTRA_KEY, 0.0f); 
    } 
} 
Verwandte Themen