添加變量到savedInstanceState我試圖通過savedInstanceState包保留數據(並最終還原它)爲我的屏幕旋轉時。但數據來自afterTextChanged事件中的editText字段。這裏是我的代碼:從onCreateView方法的片段
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
View V= inflater.inflate(R.layout.inputscreen, container, false);
final EditText loan_amount =(EditText)V.findViewById(R.id.inp_loan_amount);
final EditText the_Rate = (EditText)V.findViewById(R.id.inp_interest_rate);
if (savedInstanceState != null)
{
loan_amount.setText(savedInstanceState.getString("loanAmount"));
}
loan_amount.addTextChangedListener(new TextWatcher()
{
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
@Override
public void afterTextChanged(Editable s) {
savedInstanceState.putString("loanAmount","Test Message");
}
}
});
在上面的代碼中,我僅使用「測試消息」代替EditText字段中的實際字符串,只是爲了簡單起見。錯誤是「不能引用在不同方法中定義的內部類中的非最終變量」錯誤,因爲我指的是內部類中的savedInstanceState包。但EditText字段在OnCreateView中的膨脹函數之前不存在,所以我需要在這裏保存數據。將「final」添加到savedInstanceState包給了我一個NullException錯誤。
所以基本上我需要知道如何成功地將內部類(addTextChangedListener)生成的數據保存到savedInstanceState Bundle中,以便在屏幕旋轉後恢復它。如果有一個簡單的方法來做到這一點,我是一個白癡!請告訴我。
這是處理屏幕旋轉的正確方法嗎?我認爲這是onSavedInstanceState事件的目的。您提供的鏈接沒有具體提及屏幕方向更改。 – user1723280