private void updateView() {
    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
    String characterName =
        preferences.getString(
            (String) getText(R.string.pref_character_name_key),
            (String) getText(R.string.pref_character_name_default));

    mAvatarImageView = (ImageView) getView().findViewById(R.id.avatar);
    mAvatarImageView.setImageResource(getAvatarResourceId());
    mCharacterNameTextView = (TextView) getView().findViewById(R.id.character_name);
    mCharacterNameTextView.setText(characterName);

    mSetupCharacterButton = (Button) getView().findViewById(R.id.button_setup_character);
    mSetupCharacterButton.setOnClickListener(
        new View.OnClickListener() {
          @Override
          public void onClick(View v) {
            Intent intent = new Intent(getActivity(), CharacterSetupActivity.class);
            startActivity(intent);
          }
        });

    mSpinner = (ProgressBar) getView().findViewById(R.id.spinner);
    mJoinStartButton = (Button) getView().findViewById(R.id.button_join_start);
    mJoinStartButton.setOnClickListener(
        new View.OnClickListener() {
          @Override
          public void onClick(View v) {
            onJoinReadyClicked();
          }
        });

    SpellcastGameModel model = SpellcastApplication.getInstance().getGameModel();
    PlayableCharacter player = model.getControlledCharacter();

    if (player.getPlayerState() == GameManagerClient.PLAYER_STATE_AVAILABLE) {
      mSetupCharacterButton.setVisibility(View.VISIBLE);
    } else {
      mSetupCharacterButton.setVisibility(View.INVISIBLE);
    }

    if (model.isGameJoinable() && !player.isPlayerRequestInProgress()) {
      mJoinStartButton.setVisibility(View.VISIBLE);
      mSpinner.setVisibility(View.GONE);
      if (player.getPlayerState() == GameManagerClient.PLAYER_STATE_AVAILABLE) {
        mJoinStartButton.setText(R.string.button_join_battle);
      } else if (player.getPlayerState() == GameManagerClient.PLAYER_STATE_READY) {
        mJoinStartButton.setText(R.string.button_start_battle);
      }
    } else {
      mJoinStartButton.setVisibility(View.GONE);
      mSpinner.setVisibility(View.VISIBLE);
    }
  }
 private void onJoinReadyClicked() {
   SpellcastGameModel model = SpellcastApplication.getInstance().getGameModel();
   int playerState = model.getControlledCharacter().getPlayerState();
   if (model.isInitialized()) {
     if (playerState == GameManagerClient.PLAYER_STATE_AVAILABLE
         || playerState == GameManagerClient.PLAYER_STATE_PLAYING) {
       model.getControlledCharacter().sendPlayerReadyMessage();
     } else if (playerState == GameManagerClient.PLAYER_STATE_READY) {
       model.getControlledCharacter().sendPlayerPlayingMessage();
     }
   }
   updateView();
 }