[英]state of app after 2 rotations
我已經閱讀過有關本主題的文檔,在前景活動將被銷毀之前保存狀態...
並且現在一切正常(在設備旋轉之后),但是當我在旋轉之后再次旋轉設備時,我將再次丟失數據:(
這是我的代碼
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final MainActivity activity = this;
activity.setTitle("Cow Counter");
TextView QntyResultField = findViewById(R.id.textView);
QntyResultField.setText(Integer.toString(cowQnty));
}
// invoked when the activity may be temporarily destroyed, save the instance state here
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("qnty", cowQnty);
}
// How we retrieve the data after app crash...
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
//cowQnty = savedInstanceState.getInt("qnty");
TextView QntyResultField = findViewById(R.id.textView);
QntyResultField.setText("Cows: "+Integer.toString(savedInstanceState.getInt("qnty")));
}
我認為解決方案可能是實施檢查實例狀態是否已在...之前恢復的...
我已經在這里嘗試過了:
if(savedInstanceState.getInt("qnty") != 0){
TextView QntyResultField = findViewById(R.id.textView);
QntyResultField.setText("Cows: "+Integer.toString(savedInstanceState.getInt("qnty")));
}
然后我的onCreate()方法的初始部分將在結果字段中寫入零
TextView QntyResultField = findViewById(R.id.textView);
QntyResultField.setText(Integer.toString(cowQnty));
誰能告訴我是否接近解決方案?
您使用一個名為cowQnty
的變量來存儲該值,然后將其保存在onSaveInstanceState
捆綁軟件中,作為outState.putInt("qnty", cowQnty);
然后在onRestoreInstanceState
還原它時,只需將TextView
的值設置為檢索到的值,而不更新cowQnty
的值。
您如何期望再次保存一個空字段? 有兩種解決方案;
首先,如果cowQnty
不是很大的數量,並且您不介意使用一點RAM, cowQnty
static
字段,它將持久保存數據而根本不需要將其保存在Bundle
中。
其次,只需在恢復狀態時再次設置cowQnty
的值即可(為什么將其注釋掉?),如下所示:
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
cowQnty = savedInstanceState.getInt("qnty");
TextView QntyResultField = findViewById(R.id.textView);
QntyResultField.setText("Cows: "+Integer.toString(savedInstanceState.getInt("qnty")));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.