Cela démontre probablement le manque le plus épouvantable de compréhension du cycle de vie de l'activité, mais soyez sympathique. Je vais finalement vouloir appeler Activity B
de Activity A
un certain nombre de fois, en passant chaque fois un paramètre différent à Activity B
qui est alors répondu à l'utilisateur et stocke/définit diverses variables publiques. Comme un précurseur à cela, je veux juste obtenir ma tête ronde comment Activity A
voit le changement à une variable publique que Activity B
a changé.Comment afficher un texte public dans l'activité A après qu'il a été modifié par l'activité B
J'ai trois classes très simples: Common.java
qui contient les variables publiques, l'activité principale MainActivity.java
et l'activité enfant Child.java
. Il n'y a qu'une seule variable publique en ce moment; c'est la chaîne mess1
qui est initialisée à "***"
. Tout le code fait pour le moment quand mainbutton
est cliqué dans MainActivity
, il appelle Child
. Dans Child
, nous avons immédiatement défini mess1
sur "Child here"
, puis défini le texte sur Child
TextView
sur mess1
. En cliquant sur le bouton childbtn
dans Child
, nous finish()
l'activité des enfants (et bien sûr le système nous ramène à MainActivity
.
Lorsque cette application est exécutée, wee voir les trois étoiles affichées dans MainActivity
. Quand mainbutton
est pressé, nous allons .. Child
et voir "Child here"
affiché lorsque le childbtn
est pressé, nous revenons à MainActivity
MAIS, les trois étoiles sont toujours là même si nous savons avec certitude que mess1
détient maintenant "Child here"
Mes questions sont les suivantes: 1. Pourquoi, quand nous savoir mess1
a été modifié, est-ce que MainActivity
affiche toujours "***"
au retour de l'activité Child
? 2. Que dois-je changer dans le code pour afficher "Child here"
?
Des extraits de code pertinents suivent. Merci d'avance pour votre aide.
Common.java
public class Common
{
public static String mess1 = "***";
}
MainActivity.java
public class MainActivity extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button mainbutton = (Button)findViewById(R.id.mainbutton);
TextView maintop = (TextView)findViewById(R.id.maintop);
mainbutton.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view)
{
startActivity(new Intent(MainActivity.this, Child.class));
}
});
maintop.setText(Common.mess1);
}
Child.java
public class Child extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_child);
TextView childtext = (TextView) findViewById(R.id.childtext);
final Button childbtn = (Button) findViewById(R.id.childbtn);
Common.mess1 = "Child here";
childtext.setText(Common.mess1);
childbtn.setOnClickListener
(new View.OnClickListener()
{public void onClick(View v)
{finish();
}
}
);
}
Merci, Onik. Cela a fait l'affaire! –
Acceptation effectuée, Onik. Peut-être que vous pourriez aider avec mon prochain poste (juste posté maintenant), à savoir "Dans Android Studio, ne peut pas invoquer l'activité B de l'activité A plus d'une fois". –