首先,我在这里阅读了与我同名的问题;
所以请一次回答这个问题。我正在开发一个应用程序,它从共享首选项文件中获取值并将这些值放在EditText
字段中,为此我使用了setText()
方法。我一直在android studio中收到这个警告。我意识到这只是一个警告,但我想知道
代码如下:
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
一起使用时会收到相同的警告;为什么?以及如何纠正?
答案 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给出的答案。它给你一个理由。
答案 1 :(得分:0)
您的问题是重复的,就像您阅读了here (as linked by @Ironman)之类的答案一样。警告说明
这不是错误,只是一个警告。静态分析器无法推断出EditText或EditText.getText()的结果不为null。这里的关键字是“可能”。
为两个实例添加(可能不必要的)空检查将使警告消失。
正如@nhaarman在相关问题中所回答的那样。