Ich habe zwei Aktivitäten A und B, und ein nicht Aktivitätsklasse C.Arbeiten mit einer nicht-Aktivitätsklasse, das in der Lage sein sollte, die Instanzvariable der anrufenden Aktivität
Zur Verwendung die Methoden von C zu handhaben, Ich erstelle eine Instanz c von C aus der aktuell laufenden Aktivität (zB A steht im Vordergrund und A hat C erzeugt).
Nun möchte ich die Instanzvariablen der Aktivität A von c verwenden. Was soll ich machen?
Ich versuche, die Nicht-Aktivität C-Klasse für mehrere Aktivitäten zu verwenden. Bitte hilf mir! Ich habe viel recherchiert, konnte aber nichts Nützliches finden. :(
Dies ist der Beispielcode:
ActivityOne.java:
package com.example.vaibhav.a21matchsticks;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class Example extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
// Now comes the method, I want to use in the non-activity java class.
public void buttonClick(View view) {
EditText editText = (EditText) findViewById(R.id.editMe); //finds the view from the activity
int i = Integer.parseInt(editText.getText().toString());
//Below code changes the view state, if the condition is true
if(i<4) {
findViewById(R.id.button).setEnabled(false);
}
}
die XML-Datei Angenommen, ein lineares Layout mit einem EditText Blick haben (mit id 'EDITME') und einem Knopf (mit ID 'button'.) Es gibt mehr als 1 Aktivitäten wie diese, die jeweils mindestens die beiden oben genannten Ansichten haben (und möglicherweise mehr).
Meine Aufgabe ist es, eine Nicht-Aktivitätsklasse C zu erstellen, die behandelt bedingte Aussage für verschiedene Aktivitäten und ändern das jeweilige Layout entsprechend ngly.
Dies ist sehr vage. Was soll Klasse C genau tun? Wenn Sie nur eine Methode für Ihre Aktivitätsklasse von woanders aufrufen müssen, können Sie eine Instanz davon übergeben. Wenn Sie jedoch nicht vorsichtig sind, kann der Aktivitätslebenszyklus einige Fehler in diesen Plan einbringen. – solarshado
@solarshadow natürlich tut die C-Klasse in dieser Frage nichts nützliches. Es sollte ein Beispiel für meine Frage sein. In meinem ursprünglichen Code habe ich 3 Aktivitäten. Jede dieser Aktivitäten verwendet den gleichen Code zum Ausführen eines Satzes von Anweisungen. Also beschloss ich, sie alle in eine Nicht-Aktivitätsklasse zu setzen, um einige Zeilen zu sparen. Aber dann erkannte ich, dass der Code, den ich in diese Klasse schreiben werde, sich auf einige Ansichten der aufrufenden Aktivität beziehen wird. – vaibhavS
Je nachdem, was Sie gerade tun, könnten Sie C als Oberklasse Ihrer anderen Aktivitätsklassen erstellen. Wenn Sie setContentView() überschreiben, können Sie nach dem Aufruf der Super-Implementierung die benötigten Ansichten abrufen. – solarshado