2017-04-18 4 views
-3

Ich möchte eine String-Variable senden, die in einen EditText auf ActivityOne eingegeben wird, um die Daten zu übergeben und als TextView auf ActivityThree angezeigt werden. Allerdings habe ich als einzige Lösung Probleme, die ich finden kann, weil die Aktivität währenddessen auf ActivityThree wechselt. Ich möchte dies vermeiden oder vielleicht sogar die Daten an ActivityThree senden und mit einem Klick auf ActivityTwo alle wechseln. Jede Hilfe oder Umleitung zu einer aktuellen Lösung würde sehr geschätzt werden.Wie gebe ich Daten von einem EditText in einer Aktivität an eine TextView in einer anderen Aktivität weiter, ohne zur zweiten Aktivität zu wechseln?

+0

Verwenden Sie sharedreference, um Ihre aktuelle Eingabe in Ihrer aktuellen Aktivität zu speichern und sie für die andere Aktivität anzuzeigen. –

Antwort

0

Wenn Sie Daten von ActivityOne an ActivityThree senden möchten, indem Sie ActivityTwo vermeiden, dann speichern Sie diese Daten in einer statischen Variablen und verwenden Sie dann diese Variable in ActivityThree, um TextView-Daten festzulegen.

0

Sie können dies einfach mit SharedPreferences tun.

  1. Einstellung EditText Werte in Preference von ActivityOne:

    // EditText 
    EditText editText = (EditText) findViewById(R.id.editText); 
    
    SharedPreferences.Editor editor = getSharedPreferences("Your_Preference_Name", MODE_PRIVATE).edit(); 
    editor.putString("KEY_VALUE", editText.getText().toString()); 
    editor.commit(); 
    
  2. In ActivityThree, abrufen Wert von Preference:

    SharedPreferences prefs = getSharedPreferences("Your_Preference_Name", MODE_PRIVATE); 
    String editTextValue = prefs.getString("KEY_VALUE", null); 
    
    // TextView 
    TextView textView = (TextView) findViewById(R.id.textView); 
    textView.setText(editTextValue); 
    

Hope this helfen ~

0

Verwenden Sie eine globale Variable in der Application-Klasse und legen Sie ihren Wert in ActivityOne fest und lesen Sie den gleichen Wert aus ActivityThree.Global-Variablen sind für gesamte Projektaktivitäten verfügbar.

0

Der beste Weg ist die Eingabe extra. Tun Sie dies in Aktivität ein

Intent i = new Intent(ActivityOne.this, ActivityThree.class); 
i.putExtra("label", "label_text"); 
startActivity(i); 

erhalten dann die Zeichenfolge in Aktivität drei als solche:

EditText input = //intialize it in OnCreate 
Intent intent = getIntent(); 
String data = intent.getExtras().getString("label"); 
input.setText(data); 
0

Es gibt so viele Möglichkeiten, dies zu tun .. Aber es hängt stark ab, was Sie vorhaben zu tun mit Daten und Ihre Situation .. Wenn Sie Anzeige wollen die Daten in Aktivität drei, als Sie persist Daten machen und es später zeigen, wenn die Aktivität drei ist erstellt oder wieder aufgenommen, jetzt:

1- Wenn Sie Anzeige wollen die Daten in Aktivität drei und Sie wollen den Wert nur in aktuelle Sitzung können Sie eine Global Variable oder sogar Static ein, wenn Sie den gewünschten Wert als statische Variable in Ihrer Aktivität drei definieren, als Sie einfach darauf zugreifen und verwenden können es ohne Notwendigkeit, dass die Aktivität sogar erstellt wird:

public ActivityThree extends Activity { 
    public static String myValue; 

2- Wenn Sie wollen Anzeige die Daten in Aktivität drei und Sie Daten wollen bestehen auch wenn die App geschlossen ist, können Sie SharedPreferences verwenden, wie hier beschrieben: https://developer.android.com/training/basics/data-storage/shared-preferences.html

3- Wenn Sie eine Hintergrundaufgabe in Aktivität drei auf Wert, der bestimmt wird, ausführen möchten, können Sie LocalBroadcastManager verwenden: https://www.intertech.com/Blog/using-localbroadcastmanager-in-service-to-activity-communications/

Verwandte Themen