我是剛剛接觸android開發人員,我正在嘗試學習SharedPreferences。 如何使用按鈕操作X的值,然後再次使用按鈕將其保存到SharedPreferences。錯誤:無法爲最終變量分配值
我必須在OnCreate之後聲明SharedPreferences,但是如果我在 之後聲明X OnCreate,我必須將它設置爲Final,因此我可以在我的onClickListener中使用它,因爲它是內部類,但如果我這樣做,那麼我會得到編譯錯誤,上面寫着:
"Error:(42, 17) error: cannot assign a value to final variable x"
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", MODE_PRIVATE);
final Editor editor = pref.edit();
int x = pref.getInt("Value", 0);
final TextView txt = (TextView) findViewById(R.id.textView);
final Button ButtonAdd = (Button) findViewById(R.id.buttonPlus);
final Button ButtonMinus = (Button) findViewById(R.id.buttonMinus);
final Button ButtonCommit = (Button) findViewById(R.id.buttonCommit);
final EditText EditText = (EditText) findViewById(R.id.editText);
txt.setText(Integer.toString(x));
ButtonAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
x = x + 1;
EditText.setText(Integer.toString(x));
}
});
ButtonMinus.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
if(x != 0){
x=x-1;}
EditText.setText(Integer.toString(x));
}
});
ButtonCommit.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
txt.setText(Integer.toString(x));
editor.putInt("Value", x);
}
});
}
}
請看看_final_這意味着什麼:HTTPS:/ /en.wikipedia.org/wiki/Final_(Java)#Final_variables –
全局聲明'int x' .. private int x; – rafsanahmad007