2015-10-07 41 views
0

一直在这个问题上困扰了很长时间,并且尝试了多种我认为可以修复它的东西排列组合我对Java很新,不能弄清楚。在方法后错误:试图调用接口方法'java.util.Map android.content.SharedPreferences.getAll()'在一个空对象引用

public SharedPreferences prefs; 
public SharedPreferences.Editor editor; 

然后:

所以我宣布这个东西

public void SaveInsult(View view) { 
     String saved = insult.getText().toString(); 
     int number = prefs.getAll().size(); 
     int newKey = number + 1; 
     String newKeyString = "" + newKey; 
     editor.putString(newKeyString, saved); 
     editor.commit(); 
     Toast.makeText(getApplicationContext(), R.string.addedFavs, Toast.LENGTH_SHORT).show(); 
} 

我的应用程序将启动罚款,怎么过,当我运行按钮上点击按钮,点击我这个代码得到错误:

Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'java.util.Map android.content.SharedPreferences.getAll()' on a null object reference 

我知道我失去了一些东西,我只是无法解决问题。

+1

称之为'prefs'为空 – Blackbelt

回答

1

您还没有初始化首选项:

SharedPreferences prefs = context.getSharedPreferences("Your_Key", Context.MODE_PRIVATE); 
SharedPreferences.Editor editor = prefs.edit(); 

确保您之前editor.putString(newKeyString, saved);

+0

我试着加入这个东西,我只是不能找出我的位置应该是把它放在我的方法中,在外面或在哪里?谢谢 – James

+0

如果'prefs'对象在一个Activity上,那么放入'onCreate'听起来很合理。 – RobVoisey

+0

我不得不摆脱我发布的第一个代码,然后我把你在这个方法中提出的建议,这是我能够实现它的唯一方法。感谢您的帮助:) – James

相关问题