У меня проблема с моим TextView. У меня есть PlayScreenActivity, который отображает информацию о расходных материалах. в верхней части экрана. затем я иду на экран магазина и покупаю принадлежности. когда я возвращаюсь, все остальные меняются, но 1, и он отображает новое значение, если я изменю свой телефон и изменения ориентации, это единственный способ увидеть добавленные закупленные предметы. У кого-нибудь есть идея, почему это происходит?Проблема с TextView в android
Я установил ориентацию экрана на портрет, чтобы увидеть, будет ли он работать, если он не может переключиться, но не исправить.
EDIT
Вот копия моей деятельности Код:
общественный класс PlayscreenActivity расширяет 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));
}
}
Сахарный код не перерисовывается. –
Ну, я запустил catlog для Sugar, и я зарегистрировал как активность магазина, так и игровой экран. когда я нажимаю кнопку, чтобы купить сахар, у меня есть refreshTotal в этом действии, который показывает общую покупную сумму, прежде чем я приму и вернусь к экрану воспроизведения. Это показывает, что мой data_.sugar_ получает 12, но не имеет его, как только он возвращается на playcreen –
Ну, я не уверен в объектах Data и GameData, но вы решили создать новый объект GameData в saveData() , а затем вы передаете ему всю активность, что кажется немного чрезмерным. Если вы хотите только сохранить данные, попробуйте передать Bundle вместо этого? Кроме того, вы можете попробовать использовать onRetainNonConfigurationInstance() для фактического сохранения полного объекта. На самом деле это не остается за пределами памяти, но это может быть полезной альтернативой? http://android-developers.blogspot.ca/2009/02/faster-screen-orientation-change.html – aheinrich