Java SharedReferences不起作用(“无法解析方法';getPreferences';”)
您好,我目前正在尝试将一个简单的整数值从EditText保存到SharedReferences,以便我可以在任何活动中访问它。我试着跟随谷歌教程,但我无法让它工作。我最终收到错误消息“无法解析方法'getPreferences'”。我意识到还有其他关于SharedReference的线索,但我似乎无法理解它们 另外,如果您能帮助我找到一种比catch语句更好的方法来避免NumberFormatException,请告诉我。再次感谢!非常感谢您的帮助 爪哇 }而不是Java SharedReferences不起作用(“无法解析方法';getPreferences';”),java,android,Java,Android,您好,我目前正在尝试将一个简单的整数值从EditText保存到SharedReferences,以便我可以在任何活动中访问它。我试着跟随谷歌教程,但我无法让它工作。我最终收到错误消息“无法解析方法'getPreferences'”。我意识到还有其他关于SharedReference的线索,但我似乎无法理解它们 另外,如果您能帮助我找到一种比catch语句更好的方法来避免NumberFormatException,请告诉我。再次感谢!非常感谢您的帮助 爪哇 }而不是 SharedReference
SharedReferences sharedPref=this.getPreferences(Context.MODE\u PRIVATE)代码>
使用SharedPreferences sharedPref=ExamPrepHome.this.getPreferences(Context.MODE\u PRIVATE)代码>
这是因为在匿名类中,“this”表示该内部类,而不是活动对象。您必须使用数字格式异常进行检查,以避免在检索对象时崩溃。我需要等待一分钟,它才会允许我接受
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");
}
}