Frage

Wie gebe ich einen Wert von einem Bildschirm in seinen vorherigen Bildschirm?

Betrachten wir diesen Fall: Ich habe zwei Aktivitäten. Der erste Bildschirm weist eine TextView und eine Taste und die zweite Aktivität hat einen EditText und einen Knopf.

Wenn ich die erste Schaltfläche klicken dann hat es auf die zweite Aktivität zu bewegen und hier Benutzer hat etwas in das Textfeld eingeben. Wenn er den Knopf aus dem zweiten Bildschirm drückt dann die Werte aus dem Textfeld auf die ersten Aktivität bewegen sollen und das sollte in der ersten Aktivität TextView angezeigt werden.

War es hilfreich?

Lösung

Aktionen auf eine Aktivität durchgeführt, um zu erfassen innerhalb eines anderen erfordert drei Schritte.

Starten Sie die Sekundär-Aktivität (Ihre ‚Edit Text‘ Aktivität) als Teilaktivität von startActivityForResult von Ihrer Hauptaktivität verwendet wird.

Intent i = new Intent(this,TextEntryActivity.class);    
startActivityForResult(i, STATIC_INTEGER_VALUE);

Im Rahmen der Unteraktivität, anstatt nur die Aktivität zu schließen, wenn ein Benutzer auf die Schaltfläche klickt, müssen Sie eine neue Intent erstellen und umfassen den eingegebenen Text Wert in seinem Extra Bündel. Um es zurück an die Mutter Anruf setResult passieren, bevor finish Aufruf der Sekundäraktivität zu schließen.

Intent resultIntent = new Intent();
resultIntent.putExtra(PUBLIC_STATIC_STRING_IDENTIFIER, enteredTextValue);
setResult(Activity.RESULT_OK, resultIntent);
finish();

Der letzte Schritt ist in der anrufenden Aktivität: Aufschalten onActivityResult für Rückrufe aus der Texteingabeaktivität zu hören. Holen Sie sich das Extra aus dem zurück Intent den Textwert zu erhalten, sollten Sie werden angezeigt wird.

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) {     
  super.onActivityResult(requestCode, resultCode, data); 
  switch(requestCode) { 
    case (STATIC_INTEGER_VALUE) : { 
      if (resultCode == Activity.RESULT_OK) { 
      String newText = data.getStringExtra(PUBLIC_STATIC_STRING_IDENTIFIER);
      // TODO Update your TextView.
      } 
      break; 
    } 
  } 
} 

Andere Tipps

Es gibt einige Möglichkeiten, mit denen Sie Variablen oder Objekt in anderen Klassen oder Aktivität zugreifen können.

A. Datenbank

B. gemeinsame Einstellungen.

C. Objektserialisierung.

D. Eine Klasse, die gemeinsamen Daten halten kann, als Common Utilities genannt wird, hängt von Ihnen ab.

E. Übergeben von Daten durch Intents und Parcel Schnittstelle.

Es hängt von Ihren Projektanforderungen.

A. Datenbank

SQLite ist eine Open-Source-Datenbank, die in Android eingebettet ist. SQLite unterstützt Standard-relationale Datenbank-Features wie SQL-Syntax, Transaktionen und vorbereitete Anweisungen.

Tutorials - http://www.vogella.com/articles/AndroidSQLite/ article.html

B. Gemeinsame Einstellungen

Angenommen, Sie speichern Benutzernamen möchten. So wird es nun zwei, was ein Key Benutzername, Wert Wert.

Wie speichern

 // Create object of SharedPreferences.
 SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
 //now get Editor
 SharedPreferences.Editor editor = sharedPref.edit();
 //put your value
 editor.putString("userName", "stackoverlow");

 //commits your edits
 editor.commit();

Mit putString (), putBoolean (), putInt (), putFloat (), putLong () Sie können Ihre gewünschte dtatype.

speichern

Wie holen

SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
String userName = sharedPref.getString("userName", "Not Available");

http://developer.android.com/reference/android/content /SharedPreferences.html

C. Objektserialisierung

Objekt serlization wird verwendet, wenn wir ein Objekt Zustand schicken Sie es über das Netzwerk speichern möchten oder Sie können es auch für Ihre Zwecke verwenden.

Verwenden Sie

Java Beans und speichern darin als eines seiner Felder und Verwendung Getter und Setter für das

Java Beans sind Java-Klassen, die Eigenschaften haben. Denk an Eigenschaften als private Instanzvariablen. Da sie privat sind, der einzige Weg, sie können von außerhalb ihrer Klasse zugegriffen werden soll, durch Verfahren, die in der Klasse. Das Methoden, die den Wert einer Eigenschaft ändern werden Setter-Methoden genannt, und die Methoden dass der Wert eine Eigenschaft abzurufen sind Getter-Methoden genannt.

public class VariableStorage implements Serializable  {

    private String inString ;

    public String getInString() {
        return inString;
    }

    public void setInString(String inString) {
        this.inString = inString;
    }


}

Setzen Sie die Variable in Ihnen Methode unter Verwendung von

Mail
VariableStorage variableStorage = new VariableStorage();
variableStorage.setInString(inString);

Dann Objekt Serialzation verwendet dieses Objekt zu serialisiert und in der anderen Klasse Deserialisieren dieses Objekt.

Serialisierung kann ein Objekt als eine Folge von Bytes dargestellt wird, dass die Daten für das Objekt umfasst, sowie Informationen über die Art des Objekts und die Art der in dem Objekt gespeicherten Daten.

Nach einem serialisierten Objekt in eine Datei geschrieben worden ist, kann es aus der Datei gelesen und deserialisiert das heißt, die Typinformation und Bytes, die das Objekt und seine Daten darstellen können verwendet werden, um das Objekt im Speicher neu zu erstellen.

Wenn Sie für dieses Tutorial wollen diesen Link verweisen

http://javawithswaranga.blogspot.in/2011/08 /serialization-in-java.html

Get Variable in anderen Klassen

D. CommonUtilities

Sie können eine Klasse von Ihrem Selbst machen, die gemeinsame Daten enthalten können, die Sie häufig in Ihrem Projekt benötigen.

Beispiel:

public class CommonUtilities {

    public static String className = "CommonUtilities";

}

E. Geben von Daten durch Intents

Bitte lesen Sie diese Anleitung für diese Option von Daten übergeben.

http://shri.blog.kraya.co.uk/2010/04/26/android-parcel-data-to-pass-between-activities-using-parcelable-classes/

Sie haben nicht zu ..

nur nennen newIntenet () aus der zweiten Aktivität

Intent retData=new Intent();

Daten hinzufügen passieren zurück

putExtras (retData.putExtra("userName", getUsrName()));

voran geht mit setResult

setResult(RESULT_OK, retData);

und kann dann beenden

finish();

startActivityForResult ()

Und hier ist ein Link aus dem SDK mit mehr Informationen:

http://developer.android.com/guide/appendix /faq/commontasks.html#opennewscreen

und scrollen Sie zum Teil des Titel „ein Ergebnis aus einem Bildschirm zurückgehenden“

Ich verwende oft statische Variablen in der anrufenden Aktivität mit statischen Setter-Methoden, sie zu setzen.

Auf diese Weise kann ich Wert in jeder Aktivität nach Belieben ändern, unabhängig von dem genauen Ablauf der Steuerung zwischen den verschiedenen Aktivitäten.

Beachten Sie, dass dieser Trick kann nur verwendet werden, wenn Sie die nicht kümmern Instanziierung mehr als eine Kopie der gleichen Aktivität (Klasse) in der Anwendung, doch ich fand dies die einfachste zu implementieren, und ich verwende es am meisten.

Der beste Weg, hier zu tun ist, variabel zu einer gemeinsamen Klasse zu setzen, die nicht in den Anwendungsbereich definiert wird

public class Utils 
{
    public static String mPosition;
}

in Ihrem Code (z OnButtonClick etc ...)

Intent intent = new Intent(Intent.ACTION_PICK, 
ContactsContract.Contacts.CONTENT_URI);
Utils.mPosition = mViewData.mPosition + "";
LogHelper.e(TAG, "before intent: " + Utils.mPosition);
startActivityForResult(intent, Keys.PICK_CONTACT);

in dem Code von

@Override     public void onActivityResult (int requestCode, int Result, Intent-Daten)     {         if (requestCode == Keys.PICK_CONTACT)         {             if (Result == Activity.RESULT_OK)             {                 Uri Kontaktdaten = data.getData ();

            //you may use the variable here after intent result
            LogHelper.e(TAG, "after intent: " + Utils.mPosition);
....
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top