2013-02-12 14 views
5

Ich muss eine Variable von (um) Nicht-Aktivität-Klasse an eine nameget (Android-Aktivität) -Klasse übergeben. Zeigen Sie den übergebenen Variablenwert in der Textansicht an. Bitte teilen Sie mir mit, was in diesem Beispiel zu tun ist. Wie es zu Android-AktivitätÜbergeben Sie Variable zwischen Nicht-Aktivität-Klasse Android-Aktivität Klasse

public class around(non-activity class) 
{ 
    String name = "arjun"; 
    //how to pass this name value to an below activity 
    nameget nam = new nameget(); 
    String new = nam.get(name); 
} 

public class nameget extends Activity(android activity class) 
{ 
    public String get(String name) 
    { 
     String got = name; 
     TextView t1 = (TextView)findViewById(R.id.textView1); 
     t1.setText(name); 
    } 
} 
+0

Die Frage ist, wo ist die Klasse definiert und in welchem ​​Kontext lebt die Instanziierung, von der man die "Variable" "weitergeben" will. Variablen können auch nicht _passiert_ werden, sie könnten _shared_ sein; andererseits könnten _values_ und _references_ übergeben werden. Also haben Sie irgendwelche spezifischen Anforderungen diesbezüglich. –

+0

Haben Sie eine Instanz dieser Klasse? Wenn ja, benutze einen Getter, um die Zeichenkette abzurufen und benutze sie im setText. zB t1.setText (around.getString()); – Tobrun

+0

Ist die Klasse eine Asyntask? oder heißt es einfach? Wenn Sie es nur aufrufen, können Sie den Wert wie bei jedem normalen Methodenaufruf zurückgeben. Mach einfach einen Getter. – Gjordis

Antwort

2

die Sie interessieren, Ihre nicht Aktivitätsklasse in Sie Aktivitätsklasse deklarieren.

public class around(non-activity class) 
{ 
Public static String name; 
name = "arjun"; 
//how to pass this name string to an below activity 
} 

public class nameget extends Activity(android activity class) 
    { 
    around ar = new around(); 
    //declare non activity class here 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
TextView t1 = (TextView)findViewById(R.id.textView1); 
t1.setText(ar.name); 
} 
} 
2

passieren Versuchen Sie, diese

public class around(non-activity class) 
    { 
    public static String name = "arjun"; 
     //how to pass this name string to an below activity 
    } 

    public class nameget extends Activity(android activity class) 
    { 
     TextView t1 = (TextView)findViewById(R.id.textView1); 
//your class name around 
     t1.setText(around.name); 
    } 
+0

hast du deine antwort –

1

Sie einfach Getter und Setter für die Variable in nicht-Aktivitätsklasse wie ..

public String getName(){ 
    return name; 
} 

public void setName(String name){ 
    this.name = name; 
} 

jetzt von überall generieren Sie können, wie erhalten/Sollwert für Name ..

Arround ar = new Arround() 
ar.setName("Aruva"); //To set name 
ar.getName(); // To get 

in Ihrer Tätigkeit gefällt ..

t1.setText(ar.getName().toString()); 

Und Ihre Nicht-Aktivität-Klasse kann irgendwo im selben Paket oder in einem anderen Paket in src Ordner erstellt werden.

0

Ziemlich seltsame Frage, weil Ihr Design hier nicht klar ist. Sie übergeben Parameter über das Intent-Bundle an die Aktivität. Sie können sie nur beim Starten der Aktivität übergeben. Die Aktivität kann nur mit einem Kontextobjekt gestartet werden (in 99% Fällen andere Aktivität).

Sie können Aktivität aus einer Nicht-Aktivitätsklasse starten, solange Sie dort auf den Kontext zugreifen können. Aktivitäten, die Sie starten, müssen im Falle eines Zurück-Knopfes wissen, wer es ist.

Wenn Sie Daten zu übergeben Aktivität wollen, während es nicht einsehen: How do I pass data between Activities in Android application?

Wenn es nicht dieser Fall ist - beschreiben Sie bitte Ihren Fall, was ist Ihre Nicht-Aktivitätsklasse und wie wird es auf Aktivität im Zusammenhang, die Sie wollen Daten an weitergeben.

0

Der beste Ansatz für solche Probleme ist eine ereignisgesteuerte Architektur. Sie können jede Event-Bibliothek verwenden, würde ich vorschlagen eventBus.

(in scope von EventBus) erstellen sticky event genannt NameChangedEvent mit einem Namen Eigenschaft

Ihre Aktivität, solange er aktiv zuhört (auf Lebenslauf - auf Pause). Wenn der Name geändert wird, senden Sie dieses Ereignis z.

EventBus.getDefault().post(new NameChangedEvent(name));

Ihre Aktivität wird diese fangen und die Ansicht aktualisieren. Es kann auch die neueste Version dieses Ereignisses onCreate-Methode lesen.

Dies ist natürlich ein Overkill, wenn Sie versuchen, nur für 1 Feld zu tun. aber viele Apps müssen mit Datenänderungen umgehen und ihre Benutzeroberfläche aktualisieren und Ereignisse haben, ist der beste Weg (imho), es zu tun. Auf diese Weise können Sie die App-Logik und die Benutzeroberfläche locker miteinander verbinden.

0

ist leichter, wenn Sie eine Variable vom Typ „Klasse“ speichern

Beispiel: (Spaß)

Class<?> MyClassSave; 

MyClassSave = MainActivity.class; 

Und Sie können alle Werte erhalten .class-

Sie machen können public/private (statisch), oder pass für bundle/serializable/Obj

Verwandte Themen