【发布时间】:2017-12-26 03:45:24
【问题描述】:
我没有在我的应用程序中使用这个标志MODE_WORLD_READABLE,但我仍然得到这个异常?这个exception还有其他原因吗,还是我做错了什么?
这是我在 listview 和 gridview 之间切换的逻辑,我为它们设置了一个 int 标志并在共享首选项中/从共享首选项中保存/检索它们:
private int currentViewMode = 0 ;
static final int VIEW_MODE_LISTVIEW = 0;
static final int VIEW_MODE_GRIDVIEW = 1;
boolean isGridView;
在 onCreate 中:
currentViewMode = sharedPreferences.getInt("currentViewMode",VIEW_MODE_LISTVIEW);
还有我的 swichView 方法:
private void switchView() {
SharedPreferences sharedPreferences =
activity.getSharedPreferences("localGridCount",currentViewMode);
SharedPreferences.Editor editor = sharedPreferences.edit();
if (VIEW_MODE_LISTVIEW == currentViewMode){
// ListView
RecyclerView.LayoutManager mLayoutManager = new
GridLayoutManager(activity, 1, GridLayoutManager.VERTICAL, false);
gridCount = 1;
editor.putInt("localGridValue", gridCount);
recyclerView.setLayoutManager(mLayoutManager);
recyclerView.setItemAnimator(new DefaultItemAnimator());
recyclerView.setAdapter(adapter);
}else{
// GridView
RecyclerView.LayoutManager mLayoutManager = new
GridLayoutManager(activity, 2, GridLayoutManager.VERTICAL, false);
gridCount = 2;
editor.putInt("localGridValue", gridCount);
recyclerView.setLayoutManager(mLayoutManager);
recyclerView.setItemAnimator(new DefaultItemAnimator());
recyclerView.setAdapter(adapter);
}
editor.apply();
}
这是我得到的全部例外(就在牛轧糖中): Long_Exception_Link
【问题讨论】:
-
尝试使用 getDefaultSharedPreferences(activity) 代替 activity.getSharedPreferences("localGridCount",currentViewMode);
-
@Majid 你在代码中的任何地方都使用了 VIEW_MODE_GRIDVIEW 吗?
-
@Raghavendra 是的,要处理切换我的操作栏上有两个菜单项,
VIEW_MODE_GRIDVIEW的使用在onOptionsItemSelected -
你为什么将
currentViewMode传递给getSharedPreferences()? -
@CommonsWare 我有区别
0或currentViewMode吗? ,你是对的,我不应该这样做
标签: android listview sharedpreferences android-gridview