私のアプリはTextViews
を動的に作成できる必要があるので、私のアプリがGCedであるかオリエンテーションを切り替えていれば、それらを復元する必要があります。問題は私がTextViews
の状態を復元する方法を理解できないことです。 TextView.onSaveInstanceState()
で状態を保存するとうまくいくように見えますが、Parcelable
がonRestoreInstanceState()
に渡されても、何も起こりません。結果のビューは空白になります。私は、デバッガでstate.getParcelable("message")
の値をチェックして、それは間違いなく必要な情報を持っているTextView.onRestoreInstanceState()が機能しない
public class MainActivity extends AppCompatActivity {
TextView v;
@Override
protected void onCreate(Bundle state) {
super.onCreate(state);
setContentView(R.layout.activity_main);
ViewGroup main = (ViewGroup) findViewById(R.id.main);
v = new TextView(this);
main.addView(v);
if (state == null) {
v.setText("A simple message.");
} else {
v.onRestoreInstanceState(state.getParcelable("message"));
}
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putParcelable("message", v.onSaveInstanceState());
}
}
:これは動作しません短い例です。 onRestoreInstanceState()
ちょうどそれを使用していません。助けを借りていただければ幸いです。
EDIT:私はデバッガで台無しにしました。情報は実際にはバンドルに書き込まれませんでした。 TextView.onSaveInstanceState()
が空のParcelableを返しました。それが本当の問題でした。
問題は、特にParcelableからテキストビュー状態を復元することです。 onRestoreInstanceState()をオーバーライドすることで同じ問題が発生します。 – enigmaticPhysicist