SharedPreferences无效(“无法解析方法'getPreferences'”)

时间:2018-01-04 17:32:20

标签: java android

您好我正在尝试将一个简单的整数值从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");

            }



}

}

1 个答案:

答案 0 :(得分:0)

而不是 SharedPreferences sharedPref = this.getPreferences(Context.MODE_PRIVATE); 使用SharedPreferences sharedPref = ExamPrepHome.this.getPreferences(Context.MODE_PRIVATE);

原因是因为在匿名类中,'this'表示内部类而不是Activity对象。并且您必须使用数字格式异常来检查以避免在检索对象时发生崩溃。