[英]Fragment TextView state after orientation change (with different layouts)
我正在嘗試創建一個具有縱向模式的簡單版本和一個科學版本的計算器,以及橫向模式的過去計算列表。 我遇到了將縱向模式的 textview 中的當前值傳遞給橫向模式的問題。
我的主要活動:
private FragmentManager fm;
Fragment fragmentScientific, fragmentList
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fm = getSupportFragmentManager();
setUpFragments();
}
private void setUpFragments() {
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
fragmentScientific= fm.findFragmentById(R.id.container_ui_landscape);
fragmentList= fm.findFragmentById(R.id.container_list);
if ((fragmentScientific == null) && (fragmentList == null)) {
fragmentScientific= new ScientificFragment();
fragmentList= new RecordListFragment();
fm.beginTransaction()
.add(R.id.container_ui_landscape, fragmentScientific)
.add(R.id.container_list, fragmentList)
.commit();
}
} else {
fragmentScientific= fm.findFragmentById(R.id.container_ui_portrait);
if (fragmentScientific== null) {
fragmentScientific = new ScientificFragment();
fm.beginTransaction()
.add(R.id.container_ui_portrait, fragmentScientific)
.commit();
}
}
}
我試圖在我的 ScientificFragment class 中使用 onSaveInstanceState 包來攜帶它
private TextView newRes;
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
savedInstanceState.putString("currentCal", newRes.getText().toString());
}
但我最終得到了兩個單獨的保存包,一個用於縱向,一個用於橫向。
Android 系統實際上會在方向更改時為您處理視圖恢復,無論您是否有不同的布局。 關鍵是在兩個布局中具有相同的 ID。 使用不同的或根本不指定任何內容將阻止他們的 state 被恢復。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.