Search code examples
javaandroidtextviewlifecycle

TextView Disappears after Screen Rotation


I am new to savedInstanceState. There are some great resources out there, and I have nearly figured it all out. However, my TextView updates like I want it to, but it disappears. I want it to remain there when I rotate the device instead of having to click a button to bring it back. Any idea on where I am going wrong? Thanks!

TextView cashView is where I want to see int cash.

@Override
    public void onSaveInstanceState(Bundle savedInstanceState) {
      super.onSaveInstanceState(savedInstanceState);
      // Save UI state changes to the savedInstanceState.
      // This bundle will be passed to onCreate if the process is
      // killed and restarted.
      savedInstanceState.putInt("cash", cash);
      savedInstanceState.putInt("anteBet", anteBet);
      savedInstanceState.putInt("playBet", playBet);
      savedInstanceState.putInt("pairPlusBet", pairPlusBet);
      savedInstanceState.putString("cashView", cashView.toString());
      // etc.
    }

@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
  super.onRestoreInstanceState(savedInstanceState);
  // Restore UI state from the savedInstanceState.
  // This bundle has also been passed to onCreate.
  cash = savedInstanceState.getInt("cash");
  anteBet = savedInstanceState.getInt("anteBet");
  playBet = savedInstanceState.getInt("playBet");
  pairPlusBet = savedInstanceState.getInt("pairPlusBet");
  cashView.setText(savedInstanceState.getString(cashView.toString()));
}

Solution

  • Haha...after an hour of fiddling with it, i figured it out as soon as I finished asking the question. Thanks for your time though!

    @Override
    public void onSaveInstanceState(Bundle savedInstanceState) {
      super.onSaveInstanceState(savedInstanceState);
      // Save UI state changes to the savedInstanceState.
      // This bundle will be passed to onCreate if the process is
      // killed and restarted.
      savedInstanceState.putInt("cash", cash);
      savedInstanceState.putInt("anteBet", anteBet);
      savedInstanceState.putInt("playBet", playBet);
      savedInstanceState.putInt("pairPlusBet", pairPlusBet);
      savedInstanceState.putString("cashView", cashView.getText().toString());
      // etc.
    }
    
    @Override
    public void onRestoreInstanceState(Bundle savedInstanceState) {
      super.onRestoreInstanceState(savedInstanceState);
      // Restore UI state from the savedInstanceState.
      // This bundle has also been passed to onCreate.
      cash = savedInstanceState.getInt("cash");
      anteBet = savedInstanceState.getInt("anteBet");
      playBet = savedInstanceState.getInt("playBet");
      pairPlusBet = savedInstanceState.getInt("pairPlusBet");
      cashView.setText(savedInstanceState.getString("cashView"));
    }
    

    I changed savedInstanceState.putString("cashView", cashView.toString()); to savedInstanceState.putString("cashView", cashView.getText().toString());

    and i changed cashView.setText(savedInstanceState.getString(cashView.toString())); to cashView.setText(savedInstanceState.getString("cashView"));

    Not sure which one fixed it, but its fixed. Thanks anyways!