我对SharedPreferences
有点问题。
我使用的是Tabbed Activity,里面有一些片段。我的内部有一个ListView
,我希望获得selectedItem
的ID。
我收到错误,无法找到错误。
我在Fragment
上写了我的SharedPreferences:
listViewCours.setOnItemClickListener(new AdapterView.OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
long itemid= listViewCours.getItemIdAtPosition(i);
String a = String.valueOf(itemid);
editor.putString("ItemId",a);
editor.commit();
}
});
然后我试图从Activity
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
String cours = prefs.getString("ItemId","");
int cours_id = Integer.parseInt(cours);
我不知道该怎么做,但就目前而言,我无法在其他活动中获得该ID ...
答案 0 :(得分:1)
设定值:
SharedPreferences preferences = getActivity().getSharedPreferences("AppPrefs", MODE_PRIVATE);
SharedPreferences.Editor prefsEditor = preferences.edit();
long itemid= listViewCours.getItemIdAtPosition(i);
String a = String.valueOf(itemid);
prefsEditor.putString("ItemId", a);
获得活动价值:
SharedPreferences preferences = getSharedPreferences("AppPrefs", MODE_PRIVATE);
String ItemId=preferences.getString("ItemId", "");
答案 1 :(得分:0)
您使用的是两种不同类型的偏好设置。 MODE_PRIVATE 和默认共享首选项。这就是为什么你得到 NULL POINTER ERROR 的原因。试试下面的代码:
在listItem中使用:
listViewCours.setOnItemClickListener(new AdapterView.OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
long itemid= listViewCours.getItemIdAtPosition(i);
String a = String.valueOf(itemid);
prefs.edit().putString("ItemId",a).apply();
}
});
希望这有帮助。