当Activity未重新加载时,复选框刷新不起作用 - Android

时间:2012-04-19 14:53:39

标签: android database android-activity

我创建了一个活动,可在用户点击按钮时刷新报价。在同一活动中,有一个复选框,如果用户喜欢这些报价,则可以点击该复选框。

除了复选框,一切都很完美。当用户点击它们时,我希望选中该复选框。仅当用户离开活动并在稍后阶段返回时才会发生这种情况。

但是,当用户停留在活动中并返回到报价时,将显示旧状态而不是用户首选项。

复选框甚至在数据库中也是根据值配置的,如果值为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()确认是否在数据库中标记了收藏列,并返回true为false,设置复选框值。

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);
}

同样,这仅在我恢复报价活动时才有效,而不是在我目前参与报价活动时。

希望这是有道理的。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

您需要刷新您的复选框以查看更改,因为您在数据库中进行了更改,但未在UI上进行更改。您需要观察数据库并在修改后刷新复选框。

答案 1 :(得分:0)

刷新光标解决了问题。