我正在创建一个具有收藏功能的应用程序,用户可以在收藏夹列表中添加项目,我有一个listActivity,显示最喜欢的项目; 我使用此代码在共享偏好中存储喜欢的情况
boolean[] favorite;
String[] storyTitle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
storyTitle = getResources().getStringArray(R.array.storyTitles);
favorite = new boolean [storyTitle.length];
SharedPreferences appPref = PreferenceManager.getDefaultSharedPreferences(this);
for(int x=0;x<storyTitle.length;x++){
String str ="subject_"+ String.valueOf(x);
favorite[x]= appPref.getBoolean(str, false);
}
}
当用户点击添加到收藏夹时,我有一个方法,通过使tat项目为true将项目添加到收藏夹 现在一切都好;但是当我想用下面的代码显示ListActivity和最喜欢的项目时;如果我的一件物品是假的;意外错误并退出应用程序
String[] storyTitles;
String[] favorite;
int c=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
storyTitles=getResources().getStringArray(R.array.storyTitles);
favorite= new String[storyTitles.length];
doFav();
setListAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,favorite));
}
public void doFav(){
int c=0;
SharedPreferences appPref = getSharedPreferences("Preference", MODE_PRIVATE);
for( int i=0 ; i<storyTitles.length;i++){
String str ="subject_"+String.valueOf(i);
boolean s = appPref.getBoolean(str,false);
if(s){
favorite[c]= storyTitles[i];
c++;
}
}
有什么问题? 如果我评论这部分应用程序没有错误
setListAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,favorite));
答案 0 :(得分:0)
如果真的少于其计数,则最喜欢的数组可能具有空变量。
public void doFav(){
int c=0;
SharedPreferences appPref = getSharedPreferences("Preference", MODE_PRIVATE);
Vector<String>tmp = new Vector<String>();
for( int i=0 ; i<storyTitles.length;i++){
String str ="subject_"+String.valueOf(i);
boolean s = appPref.getBoolean(str,false);
if(s){
tmp.addElement(storyTitles[i]);
}
}
favorite = new String[tmp.size()];
tmp.copyInto(favorite);
}
答案 1 :(得分:0)
你应该分享你的堆栈轨道..这可能会对这个问题有所了解..
问题可能是String数组String []最喜欢的;可能为null ..所以要么在适配器中处理null,要么在你的情况下不是自定义适配器,你必须通过其他一些技术处理它...
或问题可能是用户可能没有将任何项目标记为收藏,因此您可能没有在您喜欢的数组中复制项目作为结果null数组,因此再次处理空案例</ p>