EditText方法调用可能会产生java.lang.NullpointerException

时间:2016-06-23 11:52:27

标签: android nullpointerexception android-edittext sharedpreferences

首先,我在这里阅读了与我同名的问题;

所以请一次回答这个问题。我正在开发一个应用程序,它从共享首选项文件中获取值并将这些值放在EditText字段中,为此我使用了setText()方法。我一直在android studio中收到这个警告。我意识到这只是一个警告,但我想知道

  1. 是什么原因引起的?
  2. 如何纠正这个问题?
  3. 代码如下:

        EditText sil_key = (EditText)findViewById(R.id.silent_key);
        EditText gen_key = (EditText)findViewById(R.id.general_key);
        EditText vib_key = (EditText)findViewById(R.id.vibrate_key);
        SharedPreferences sharedPreferences = getSharedPreferences(getString(R.string.preference_file_key),MODE_PRIVATE);
        sil_key.setText(sharedPreferences.getString("silent","silent"));
        gen_key.setText(sharedPreferences.getString("general","general"));
        vib_key.setText(sharedPreferences.getString("vibrate","vibrate"));
    

    最后,getText()EditText一起使用时会收到相同的警告;为什么?以及如何纠正?

2 个答案:

答案 0 :(得分:1)

在类级别声明EditText,然后在onCreate()中进一步初始化。这可以解决你的问题。

class Test extends AppCompactActivity{

private EditText sil_key;

onCreate(){

...

sil_key = (EditText)findViewById(R.id.silent_key);

SharedPreferences sharedPreferences = getSharedPreferences(getString(R.string.preference_file_key),MODE_PRIVATE);
    sil_key.setText(sharedPreferences.getString("silent","silent"));

...
    }
 }

您可以将此链接称为@Rod_Algonquin给出的答案。它给你一个理由。

EditText.setText() Null Pointer Exception

答案 1 :(得分:0)

您的问题是重复的,就像您阅读了here (as linked by @Ironman)之类的答案一样。警告说明

  

这不是错误,只是一个警告。静态分析器无法推断出EditText或EditText.getText()的结果不为null。这里的关键字是“可能”。

     

为两个实例添加(可能不必要的)空检查将使警告消失。

正如@nhaarman在相关问题中所回答的那样。