您好我正在尝试将一个简单的整数值从EditText保存到sharedPreferences,以便我可以在任何活动中访问它。我试过按照谷歌教程,但我无法使它工作。我最终得到错误消息“无法解决方法'getPreferences'”。我意识到有关于sharedPreferences的其他线程,但我似乎无法理解它们。
另外,如果你能帮助我找到一个比我的catch语句更好的方法来避免NumberFormatException,请告诉我。再次感谢!非常感谢任何帮助!
爪哇
import android.content.Context;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import static com.managergmail.time.finite.finitemanager02.R.id.textViewTest;
public class ExamPrepHome extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_exam_prep_home);
Button buttonSaveNumberOfExams = (Button) findViewById(R.id.buttonSaveNumberOfExams);
try{
final EditText numberOfExamsInput = (EditText) findViewById(R.id.numberOfExamsInput);
final int numberOfExamsValue = Integer.valueOf(numberOfExamsInput.getText().toString());
buttonSaveNumberOfExams.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences sharedPref = this.getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt(getString(R.string.saved_number_of_exams), numberOfExamsValue);
editor.commit();
}
});
}catch(NumberFormatException ex){
System.out.println("Value at TextView is not a valid integer");
}
}
}
答案 0 :(得分:0)
SharedPreferences sharedPref = this.getPreferences(Context.MODE_PRIVATE);
使用SharedPreferences sharedPref = ExamPrepHome.this.getPreferences(Context.MODE_PRIVATE);
原因是因为在匿名类中,'this'表示内部类而不是Activity对象。并且您必须使用数字格式异常来检查以避免在检索对象时发生崩溃。