2

したがって、画面の上部に EditText と Button がある非常に基本的なレイアウトがあります。誰かがボタンを押すと、EditText 入力がテキスト ビューに保存され、EditText とボタンが非表示になります。そのための私のコードは次のとおりです。

public void setName(View view){
    EditText editText = (EditText) findViewById(R.id.getUserName);
    Button button = (Button) findViewById(R.id.setName);
    TextView textView = (TextView) findViewById(R.id.displayName);
    playerName = editText.getText().toString();
    textView.setText(playerName);
    editText.setVisibility(View.GONE);
    button.setVisibility(View.GONE);
    textView.setTextSize(40);
    textView.setVisibility(View.VISIBLE);
}

画面が回転すると、次のように onCreate が再度呼び出されます。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_score_keeper);
        // Identifies a textView
        TextView textView = (TextView) findViewById(R.id.displayName);
        // Hide that textView until later
        textView.setVisibility(View.GONE);
        // Set player name to default value
        playerName = "Player Name";
        // Set score to default value
        score = 0;

}

これの問題は、EditText と Button を非表示にしたという事実が失われ、TextView も再び非表示になることです。

これらのプロパティをすべて同じに保つにはどうすればよいですか? (たとえば、テキストを同じに保つ、テキスト サイズ、ビューの可視性など); onSaveInstanceState で行うことは可能ですか?

みんなありがとう。

OSFTW

4

2 に答える 2

0

オーバーライド:

   @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState)
    {
        super.onRestoreInstanceState(savedInstanceState);

            if (button not visible)
                 savedInstanceState.putBoolean("Visibility", false);
            savedInstanceState.putString("text", "EditView text");
    }

onCreate:

if (savedInstanceState != null) {

boolean x = savedInstanceState.getBoolean("visibility");
    String s = savedInstanceState.getString("text");
// set values
}
于 2013-09-08T01:23:47.127 に答える