Android Auf Button in anderer Klasse zugreifen?

3 Antworten

Doch, es geht !

class MainActivity extends Activity {

public static Button btnSettings;

// onCreate
btnSettings = findViewById(...);
}

Diese Methode ist möglich, aber nicht empfehlenswert, da 1. der Button = null sein kann und / oder wenn die Activity geschlossen wird ist Button = null.

So kannst du in anderen Klassen auf den Button zugreifen :

MainActivity.btnSettings.setText("**");

Methode 2 (empfohlen):

Sagen wir du hast eine Klasse:

public class MyListener {

Button btnSettings;

public MyListener(Button btnSettings) {
this.btnSettings = btnSettings;
}

// Dein weiterer Code
// Du kannst nun in der gesamten Klasse auf den Button zugreifen

public void setText(String text){
btnSettings.setText(text);
}

}

Nun in der Activity-Klasse :

// onCreate
Button btnSettings = findViewById(...);
MyListener listener = new MyListener(btnSettings);
// Fertig !
listener.setText("Hey");

Grüße

alex

fishgamerYT 
Fragesteller
 16.03.2019, 14:40

Vielen Dank erstmal für deine Antwort!
Ich werde es später einmal versuchen, wenn ich Zuhause bin :)

LG

1
Nun meine Frage: Kann ich in einer anderen Klasse Buttons oder andere Elemente auch aufrufen?

Jep.

Und wenn ja, wie?

Indem du dafür sorgst, dass die andere Klasse auf irgendeine Weise eine Referenz auf die betreffenden Elemente/Objekte bekommt.

Beispiel:

MyActivity.java:

class MyActivity extends Activity{
    private Button myButton;
    private TextView myText;
    private MyButtonListener myButtonListener;
    @Override protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.myactivity);
        this.myButton = (Button)findViewById(R.id.mybutton);
        this.myText = (TextView)findViewById(R.id.mytext);
        this.myText.setText("foo");
        this.myButtonListener = new MyButtonListener(myButton, myText);
    }
}

MyButtonListener.java:

class MyButtonListener implements OnClickListener{
    private Button myButton;
    private TextView myText;
    public MyButtonListener(Button myButton, TextView myText){
        this.myButton = myButton;
        this.myText = myText;
        this.myButton.setOnClickListener(this);
    }
    public void OnClick(View v){
        this.myText.setText("bar");
    }
}

Auf diese Weise kannst du z.B. für jeden Button eine eigene Listener-Klasse implementieren, musst halt nur dafür sorgen, dass diese Klasse alle notwendigen Objektreferenzen mitbekommt.

Woher ich das weiß:eigene Erfahrung
fishgamerYT 
Fragesteller
 16.03.2019, 14:41

Vielen Herzlichen Dank für deine Antwort!

Ich werde es wie gesagt später austesten wenn ich Zuhause bin ^^

LG

0

Nein kannst du leider nicht, du kannst es aber mit shared prefence versuchen

Woher ich das weiß:Berufserfahrung
fishgamerYT 
Fragesteller
 15.03.2019, 22:55

Okay, also ist der einzige ausweg dann alles was mit den Buttons bzw Progress bars zu tun hat in der MainActivity zu programmieren?

0