J'ai un problème avec mon TextView. J'ai un PlayScreenActivity qui affiche des informations sur les fournitures. en haut de l'écran. Ensuite, je vais à l'écran du magasin et j'achète des fournitures. quand je reviens tous les autres changent mais 1 et il affichera la nouvelle valeur si je tourne mon téléphone et les changements d'orientation, c'est la seule façon que je peux voir les fournitures supplémentaires achetées. Quelqu'un at-il une idée pourquoi cela se passe-t-il?Problème avec TextView dans android
Je définis l'orientation de l'écran sur portrait pour voir si cela fonctionnera s'il ne peut pas changer mais ne corrige pas.
EDIT
Voici une copie de mon code d'activité:
PlayscreenActivity public class activité { données data_;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
((TextView)findViewById(R.id.lemonsLeftText)).setText(
"Lemons: " );
((TextView)findViewById(R.id.sugarLeftText)).setText(
"Sugar: " );
((TextView)findViewById(R.id.iceLeftText)).setText(
"Ice: " );
((TextView)findViewById(R.id.cupsLeftText)).setText(
"Cups: " );
((Button)findViewById(R.id.btnshop)).setOnClickListener(
new SupplyShopListener());
}
private class SupplyShopListener implements OnClickListener{
public void onClick(View v){
Intent i = new Intent(v.getContext(), SupplyShopActivity.class);
startActivity(i);
//refreshDisplay();
}
}
@Override
public void onResume(){
super.onResume();
data_ = getData();
refreshDisplay();
}
@Override
public void onPause(){
super.onPause();
saveData();
refreshDisplay();
}
@Override
public void onConfigurationChanged(Configuration newConfig){
super.onConfigurationChanged(newConfig);
//refreshDisplay();
}
private Data getData() {
GameData player_data = new GameData(this);
player_data.open();
Data game_state = new Data(player_data.getGameString());
player_data.close();
return game_state;
}
private void saveData() {
GameData player_data = new GameData(this);
player_data.open();
player_data.setGameString(data_.SerializeGame());
player_data.close();
}
private void refreshDisplay() {
NumberFormat nf = NumberFormat.getInstance();
nf.setMinimumFractionDigits(2);
nf.setMaximumFractionDigits(2);
String totalCash = nf.format(data_.cash_);
((TextView)findViewById(R.id.lemonsLeftText)).setText(
"Lemons: " + Integer.toString(data_.lemons_));
((TextView)findViewById(R.id.sugarLeftText)).setText(
"Sugar: " + Integer.toString(data_.sugar_));
((TextView)findViewById(R.id.iceLeftText)).setText(
"Ice: " + Integer.toString(data_.ice_));
((TextView)findViewById(R.id.cupsLeftText)).setText(
"Cups: " + Integer.toString(data_.cups_));
((TextView)findViewById(R.id.totalCashText)).setText(
"Cash : " + (totalCash));
}
}
le sucre ne se redessine pas. –
Eh bien, j'ai couru le catlog pour Sugar et j'ai pu un journal dans l'activité de la boutique et l'écran de jeu. quand je clique sur le bouton pour acheter du sucre, j'ai un refreshTotal dans cette activité qui montre le montant total acheté avant que j'accepte et retourne à l'écran d'écran. Cela montre que mon fichier data_.sugar_ obtient le 12 mais ne l'a pas une fois qu'il retourne à l'écran d'affichage –
Eh bien, je ne suis pas sûr des objets Data et GameData, mais vous choisissez de créer un nouvel objet GameData dans saveData() , et ensuite vous passez l'ensemble de l'activité, ce qui semble un peu excessif. Si vous voulez seulement conserver les données, essayez de passer un paquet à la place? En outre, vous pouvez essayer d'utiliser onRetainNonConfigurationInstance() pour réellement conserver un objet complet. Ne persiste-t-il pas vraiment au-delà de la mémoire, mais cela pourrait être une alternative utile? http://android-developers.blogspot.ca/2009/02/faster-screen-orientation-change.html – aheinrich