android视图ID不正确

时间:2011-10-19 22:37:42

标签: android view listener

我在XML中创建了一个完整的布局设置,然后尝试使用findViewById()将监听器附加到按钮。我现在遇到的问题是我在方法中收到的View参数不包含我点击的视图的ID:830009633920 vs 2131099657。

Button btnNext = (Button)findViewById(R.id.btnNext);
btnNext.setOnClickListener(this);

@Override
public void onClick(View view) {
    if (view.getId() == R.id.btnNext) {
                ...
    }
}

3 个答案:

答案 0 :(得分:1)

这个怎么样:

Button btnNext = (Button)findViewById(R.id.btnNext);
btnNext.setOnClickListener(this);

@Override
public void onClick(View view) 
{
    switch (view.getId())
    {
    case R.id.btnNext:
        ...
        break;

    case R.id.foo:
        ...
        break;
    }
}

答案 1 :(得分:0)

这应该有效,所以我唯一的猜测就是你没有看到代码或布局的其余部分就是你在两个重叠的项目上设置了点击处理程序。

如果你计划制作一个Android库项目,那么由于最近工具链的变化,这样的开关将无效。

http://tools.android.com/tips/non-constant-fields

一般来说,我发现使用句柄点击的匿名类比使用大型单个处理程序要简单得多。

btnNext.setOnClickListener(new OnClickListener()
    {
        @Override
        public void onClick(View view)
        {
            ...
        }
    });

您可以尝试这种方法,只是为了调试您希望获得点击的项目是您所要按的,以确保您没有布局问题。

答案 2 :(得分:0)

尝试跳过ID,然后只比较实际的视图对象。所以像这样:

@Override
public void onClick(View view) {
    if (view.equals(btnNext)) {
                ...
    }
}