J'ai deux activités, dans l'activité (1) J'ai un TextView, dans l'activité (2) j'ai un bouton. Je veux changer la couleur TextView dans l'activité (1) en cliquant sur le bouton dans l'activité (2) et enregistrer cette couleur. Comment puis-je faire cela?
5 Réponses :
Vous devez utiliser une base de données pour conserver la couleur de la vue du texte et obtenir la couleur de la base de données. lorsque vous cliquez sur le bouton, vous pouvez le modifier dans la base de données.
Il peut utiliser les préférences partagées, la base de données n'est pas sa seule option
Vous pouvez enregistrer votre couleur avec les préférences partagées lorsque vous cliquez sur votre bouton et l'obtenir plus tard:
Dans l'activité 2 lorsque vous appuyez sur votre bouton :
PreferenceManager.getDefaultSharedPreferences(DriverScreen.this).getString(key, "default value")
Il existe de nombreuses solutions à votre problème
il y aura de nombreuses façons de réaliser ce que vous voulez, utilisez l'une d'entre elles selon votre choix.
Pour stocker la couleur du texte:
Utiliser SharedPreference
Utiliser la base de données Room ou SQLite
Enregistrer la couleur dans la classe Singleton
ou ouvrez une deuxième activité à l'aide de startActivityForResult () si vous revenez à la première activité après la fin du deuxième travail d'activité.
Pour changer la couleur du texte:
Utilisez Listener pour changer la couleur du texte lorsque vous appuyez sur le bouton de la deuxième activité
Utilisez EventBus si vous l'avez déjà implémenté dans votre projet
Utilisation du récepteur de diffusion local (envoyer la diffusion à la 1ère activité après avoir cliqué sur le bouton de la 2ème activité)
il existe de nombreuses façons de changer la couleur du texte d'une autre activité.
D'abord
transmettez la valeur de couleur à l'aide de l'intention
Code Deuxième méthode utiliser une variable statique code après la mise à jour J'espère que son travail pour vous Main2Activity.java button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//set color
MainActivity.color=getResources().getColor(R.color.colorAccent);
Intent intent=new Intent(Main2Activity.this,MainActivity.class);
startActivity(intent);
}
});
MainActivity.java MainActivity.java static int color;
android_text=findViewById(R.id.android_text);
android_text.setTextColor(color);
Main2Activity.java android_text=findViewById(R.id.android_text);
color=getIntent().getIntExtra("color",0);
android_text.setTextColor(color);
Donc je suppose que activity1 lance activity2?
Non, j'ai 1 activité qui lance 4 autres activités et ces 2 activités sont lancées par 1 activité principale
vous pouvez utiliser les préférences partagées pour enregistrer la valeur de la couleur, puis l'utiliser
oui, alors d'autres suggestions sur l'utilisation de la base de données ou des préférences partagées conviendront à votre cas ici
Comment puis-je faire ceci?? J'ai essayé, mais je ne pouvais pas faire ça
la préférence partagée est préférable pour vous essayez ceci
Si vous revenez à l'activité de visualisation de texte après avoir cliqué sur le bouton dans une autre activité, vous pouvez démarrerActivityForResult ()