我创建了一个活动,当用户单击按钮时刷新引号。在同一活动中,有一个复选框,如果用户喜欢该报价,用户可以点击该复选框。活动未重新加载时,复选框刷新不工作 - Android
除了复选框外,一切都可以正常工作。当用户点击他们喜欢的报价,我希望复选框被选中。只有当用户离开活动并在稍后阶段返回时才会发生这种情况。
但是,当用户停留在活动中并返回报价时,将显示旧状态而不是用户首选项。
即使在数据库中,该复选框也是从值中配置的,如果值为1,则应勾选复选框,如果不勾选复选框应清除。
的代码如下所示:
当用户点击下一步按钮,下面的代码被执行:
Button nextGenerateButton = (Button) findViewById(R.id.btn_next_quotes);
nextGenerateButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
String nextQuote = myDbHelper.getnextQuote();
setQuoteDisplay(nextQuote);
btn_favorite.setChecked(myDbHelper.getFavouriteCheckBoxValue());
}
});
按钮检索下一个报价和getFavouriteCheckBoxValue()确认是否喜爱列在数据库中被标记,并且返回一个设置复选框值的false的true。
public boolean getFavouriteCheckBoxValue()
{
int laballedFavourite = cursor.getInt(0);
if(laballedFavourite == 0)
{
return false;
}
else
{
return true;
}
}
如果用户喜欢该报价,该代码执行,其更新,其中喜爱列将在一个被修改的表的addFavourite()。
btn_favorite.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
if(isChecked == true)
{
myDbHelper.addFavourite();
}
if(isChecked == false)
{
myDbHelper.removeFavourite();
}
}
});
public void addFavourite()
{
ContentValues vals = new ContentValues();
vals.put("favouriteQuote", 1);
db.update(TABLE_NAME, vals, "columnId = " + cursor.getInt(1), null);
}
当我再次恢复报价活动,而不是当我目前住在报价活动这只完美的作品。
希望这是有道理的。
任何帮助将不胜感激。
btn_favorite.setChecked(myDbHelper.getFavouriteCheckBoxValue());在下一个按钮和后退按钮上执行,但只有在刷新活动时才会刷新复选框。 – user983965 2012-04-19 15:06:14
为此,您需要在获取数据库中的值之前重新创建游标。 – FUBUs 2012-04-19 15:50:51