Ich habe auch gerade keine Ahnung, ob man einfach eine Referenz auf den Button einer anderen Activity holen kann und dann einfach die Methoden aufruft, deshalb hier ein allgemeiner Weg, wie man Werte von einer Activity an eine andere übergibt:
Hier eine
kurze Beschreibung von gestern, damit ichs nicht nochmal neu schreiben muss
Bei dir ist es zwar nicht ganz dasselbe, da du Werte von einer Activity an eine andere
zurückgeben willst, aber das funktioniert vom Prinzip her eigentlich gleich, du erhälst am Schluss auch einen Intent mit deinen Werten / Bundle drin.
dafür musst du in Activity A die Activity B mit
Code:
startAcitivtyForResult(Intent intent, int requestCode)
starten (anstatt mit startActivity(Intent), wie du es jetzt vermutlich hast). Der requestCode kann dabei eine beliebige Zahl >=0 sein, die dir nachher hilft, zu unterscheiden, von welchem startActivityForResult-Aufruf das Resultat stammt.
In Activity B kannst du dann irgendwo (z.B. im OnClick-Handler des Buttons) einen Intent mit dem Resultat erzeugen und dann die Activity statt nur mit finish() einfach so beenden:
Code:
Bundle stats = new Bundle();
//Falls der Button angezeigt werden soll -> True, sonst -> False
stats.putBoolean("show_button", true);
setResult(RESULT_OK, stats);
finish();
Zusätzlich musst du in Activity A noch die Methode
Code:
protected void onActivityResult(int requestCode, int resultCode, Intent data)
überschreiben. Diese wird dann automatisch aufgerufen, wenn von einer anderen Activity ein Resultat zurückgegeben wird.
Der requestCode ist wieder wie oben der Wert, den du übergeben hast und der dir hilft, zu entscheiden, von welchem Aufruf das Resultat kam und der resultCode ist eine Variable, die anzeigt, wie das Resultat war (RESULT_OK, RESULT_CANCELED..) etwa so:
Code:
protected void onActivityResult(int requestCode, int resultCode, Intent data){
if(requestCode == [B]1[/B]){
//Resultat kommt vom Aufruf startActivityForResult(intent, [B]1[/B])
}
else if(requestCode == [B]239[/B]){
//Resultat kommt vom Aufruf startActivityForResult(intent, [B]239[/B])
}
if(resultCode == RESULT_OK){
//...
}
und irgendwo in dieser Methode kannst du dann dein Button sichtbar machen und die Beschriftung ändern, wie Ralle oben schon beschrieben hat:
Code:
Bundle bundle = data.getExtras();
Boolean showButton = bundle.getBoolean(”show_button″);
if(showButton == true){
Button01.setText("...");
Button01.setVisibility(Button.VISIBLE);
}