【问题标题】:How to make an Image Button continually clickable in android如何在android中使图像按钮连续可点击
【发布时间】:2013-11-11 03:37:04
【问题描述】:

我正在开发一个包含喜欢的功能的应用程序。当用户单击图像按钮时,它应该更改其背景资源并根据其当前背景资源执行某些操作。问题是我需要按钮可以连续点击,这样如果用户不小心将一个项目添加到收藏夹中,他/她就可以从收藏夹中删除它。

这是进行更改的 onClickListener,但它只在我的活动中执行一次。一旦用户改变了收藏状态,他/她不能再次改变它,除非他/她离开活动并重新开始。

ImageButton fav = (ImageButton) findViewById(R.id.fav);    
fav.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                if (item.getIsFav() == 1) {
                    fav.setImageResource(R.drawable.fav_dimed);
                    editFavorite("remove from favorites");
                } else if (item.getIsFav() == 0) {
                    fav.setImageResource(R.drawable.fav);
                    editFavorite("add to favorites");
                }
            }
        });

请大家帮忙:)

【问题讨论】:

  • 可能item 中的变量isFav 没有更新(总是10),因此对后续点击没有影响。请问editFavorite()的代码也可以发一下吗?
  • 我确信当用户点击按钮时,isFav的值会根据它的当前值改变(如果1变成0,如果0变成1)。问题不在这里,问题是按钮本身一旦用户点击一次就变得不可点击。
  • 使用 Toggle 并检查 Toggle 的状态如果它是 On 然后添加 Fav Else Remove
  • 既然原因还不清楚,我有几个问题:isFav怎么存储?我假设您正在使用 SQLite?如果是,您是否将值直接更新到数据库,而不是当前的item?如果editFavorite() 与更新isFav 有关,您可以在这里发布相关代码吗?最后,尝试在onClick() 中添加Log.i("OnClick", "Clicked");,就在if-else 块的上方。查看监听器是否总是响应您的点击。
  • 感谢大家的cmets。 @KaranMavadhiya:问题不在于使用的小部件的类型,它们都是一样的。

标签: android imageview imagebutton


【解决方案1】:

这可能是因为您可能正在设置 - 最喜欢的按钮 setClickable - false 或 setEnabled - false。

你确定你的代码中没有这样的东西吗?

fav.setEnabled(false);
fav.setClickable(false);

【讨论】:

  • 不,我没有。我刚刚添加了 fav.setClickable(true);和 fav.setEnabled(true);在 onClick() 方法体中确保它是可点击的,但没有任何改变!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-21
  • 2013-11-07
  • 1970-01-01
  • 1970-01-01
  • 2012-02-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多