Android 按钮在第二次单击之前保持禁用状态?

Android 按钮在第二次单击之前保持禁用状态?,android,android-layout,android-emulator,Android,Android Layout,Android Emulator,早上好 我有一个带有上一个和的项目列表下一个按钮。当用户位于列表的开头时,prev按钮被禁用。单击next(下一步)将它们带到下一条记录,我的单击处理程序将prev button enabled(上一个按钮启用)设置为true。但是,在模拟器中,它不会显示已启用的按钮。单击next(下一步)将我移动到第三条记录,处理程序再次将prev按钮设置为enabled(已启用),但这次它在emulator中变为enabled(已启用)。我在抓稻草,但我需要无效和重新绘制还是什么??我不明白为什么这么简单的

早上好

我有一个带有上一个和的项目列表下一个按钮。当用户位于列表的开头时,prev按钮被禁用。单击next(下一步)将它们带到下一条记录,我的单击处理程序将prev button enabled(上一个按钮启用)设置为true。但是,在模拟器中,它不会显示已启用的按钮。单击next(下一步)将我移动到第三条记录,处理程序再次将prev按钮设置为enabled(已启用),但这次它在emulator中变为enabled(已启用)。我在抓稻草,但我需要无效和重新绘制还是什么??我不明白为什么这么简单的任务不起作用

在XML中:

<Button
    android:id="@+id/btn_PrevLift"
    ...
    android:enabled="false"
    android:onClick="btn_PrevLiftClick" />
不,只是想告诉你我对自己正在做的事情知之甚少,为什么当我在Eclipse调试中查看变量值时,我在任何状态下都看不到enabled属性

更多信息 至少对我来说很奇怪。如果我从使用XML定义的事件处理程序改为下面的编程定义,效果会很好

btn_Nxt.setOnClickListener(new OnClickListener()
        {
public void onClick(View v)
    {
        //Call helper methods etc...
    }
 });
我想我有,但不确定确切原因


因此,当我试图获取按钮对象的句柄时,我使用的是View.findviewbyd(etc)。当我从XML更改为编程声明的事件处理程序时,我使用了ViewGroup.findViewById。如果我使用ViewGroup,我会得到一个似乎有效的“不同”句柄…?

好,因此,你可以做的是声明一个变量count,然后单击f按钮,下一步增加count的值。单击后退按钮,减少count的值,并给出一个条件,即当count时,我已经确定了问题,当然问题是我。我正在启用按钮,然后ListView正在更新到下一条记录。当然,我的启用按钮是后面的一个,所以当我第二次单击按钮时,按钮似乎突然启用,但事实并非如此。当我第二次单击时,我们移动到记录三,并显示记录二的按钮,该按钮已启用

请看,我的按钮是我的ListView的一部分,并且正在为每条记录绘制新的按钮。哦,现在一切的表现都很合理


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

是的,这就是我正在做的事情。我的问题是使用setEnabled使禁用按钮启用。然后最初将btn_设置回原位。setClickable(false);然后单击“下一步”按钮,将btn_设置为back.setClickable(true);好吧,我有点糊涂了。如果我将clickable设置为false,则为yes…它不会单击,但ui仍显示一个已启用的按钮,我现在可以听到用户呼叫错误报告???那么,您希望用户甚至看不到按钮吗??您甚至可以隐藏它,因为“enabled”作为一个位值存储在
mViewFlags
中。发布更多的
UpdateNavButtonStatus(int z)
并仔细检查
z
是否是您认为的状态。是否定义了按钮的状态?是否可以显示更多的代码?听起来好像有什么地方出了问题。FWIW mViewFlags看起来是这样的:mViewFlags 402669601
btn_Nxt.setOnClickListener(new OnClickListener()
        {
public void onClick(View v)
    {
        //Call helper methods etc...
    }
 });