-1

右利きと左利きのユーザー向けに異なるレイアウトをアプリでサポートしたいと考えています。したがって、それぞれの設定を変更した後、方向が変わったときと同じ方法でアクティビティを再開したいと思います。

私がこれまでに試したこと:

1.

Intent intent = getIntent();
finish();
startActivity(intent);

これは、保存されたインスタンスの状態を保存およびロードしません

2.

View cv = findViewById(android.R.id.content);

SparseArray<Parcelable> state = new SparseArray<Parcelable>();
cv.saveHierarchyState(state);
setContentView(desiredCv);

cv = findViewById(android.R.id.content);
cv.restoreHierarchyState(state);

それでも、多くのことはあるべき姿ではありません。

結局、再起動せずにレイアウトを適切に変更する方法を理解できたと思いますが、システム定義の構成変更と同じ方法で行う方がはるかに簡単です。

4

2 に答える 2

1

API レベル 11 以上 (Android 3.0 以降) を使用している場合はrecreate()、アクティビティを呼び出すことができます。これにより、現在のインスタンスが破棄され、新しいインスタンスが作成され、構成の変更中に発生することと同じことが行われます (つまりonSaveInstanceState()、呼び出されるなど)。

于 2013-07-18T12:45:14.333 に答える