【问题标题】:Button stays disabled until second click?按钮保持禁用状态直到第二次点击?
【发布时间】:2012-11-16 19:07:13
【问题描述】:

早安,

我有一个带有 prev 的项目列表。 & 下一步按钮。当用户位于列表的开头时,上一个按钮被禁用。单击下一步会将它们带到下一条记录,并且我的单击处理程序将 prev 按钮设置为 true。但是在模拟器中它不显示启用的按钮。单击下一步将我移动到第三条记录,并且处理程序再次将 prev 按钮设置为启用,但这次它确实在模拟器中启用。我在这里抓住了稻草,但我需要无效并重绘还是什么?我不明白为什么这样一个基本任务不起作用。

在 XML 中:

<Button
    android:id="@+id/btn_PrevLift"
    ...
    android:enabled="false"
    android:onClick="btn_PrevLiftClick" />

在处理程序代码中:

private void UpdateNavButtonStatus(int z)
{
     ...
     btn_Next.setEnabled(true);
 btn_Prev.setEnabled(true);
     ....
}

不只是为了向您展示我对自己在做什么知之甚少,为什么当我在 Eclipse 调试中查看变量值时,我在任何状态下都看不到启用的属性???

更多信息 至少对我来说很奇怪。如果我从使用 XML 定义的事件处理程序转变为以编程方式定义如下,它会很好用!!!???

btn_Nxt.setOnClickListener(new OnClickListener()
        {
public void onClick(View v)
    {
        //Call helper methods etc...
    }
 });

我想我有,但不确定为什么

因此,当我尝试获取 Button 对象的句柄时,我使用的是 View.findViewById(etc)。当我从 XML 更改为以编程方式声明的事件处理程序时,我使用了 ViewGroup.findViewById。如果我使用 ViewGroup 恢复到 xml,我会得到一个似乎可以工作的“不同”句柄......????

【问题讨论】:

  • 对于它的价值,“启用”在mViewFlags 中存储为一个位明智的值。发布更多UpdateNavButtonStatus(int z) 并仔细检查z 是否是您的想法。
  • 你定义了按钮的状态吗?
  • 你能展示更多你的代码吗?听起来那里出了点问题。
  • FWIW mViewFlags 看起来像这样:mViewFlags 402669601

标签: android android-layout android-emulator


【解决方案1】:

好的,所以你可以做的是声明一个变量 count 并在单击 f 按钮上增加 count 的值..然后单击 Back 按钮减少 count 的值并给出当 count

【讨论】:

  • 是的,这就是我正在做的事情。我的问题是使用 setEnabled 启用禁用按钮。
  • 然后初始设置 btn_back.setClickable(false);然后点击下一个按钮设置 btn_back.setClickable(true);
  • 好吧,我有点糊涂了。如果我将 clickable 设置为 false,那么是的......它不会点击,但 ui 仍然显示启用按钮的外观,我现在可以听到用户调用错误报告???
  • 那么你想要什么用户甚至看不到按钮?你甚至可以隐藏它
【解决方案2】:

我已经发现了问题,当然问题是我自己。我启用了按钮,然后 ListView 正在更新到下一条记录。当然,我的启用按钮在后面,所以当我第二次单击该按钮时,似乎突然启用,但事实并非如此。当我第二次单击时,我们移动到记录三并显示启用记录二的按钮。

看到我的按钮是我的 ListView 的一部分,并且正在为每条记录绘制新按钮。 OOHHHH 现在一切的表现非常有意义。

无论如何,我将按钮从 ListView 布局中移出,以便在用户浏览记录时它们保持不变。

【讨论】:

    猜你喜欢
    • 2014-07-02
    • 2015-10-02
    • 2013-04-02
    • 2017-12-25
    • 1970-01-01
    • 2023-03-29
    • 2019-07-22
    • 2023-04-09
    • 2014-09-04
    相关资源
    最近更新 更多