неправильный идентификатор андроид - PullRequest
0 голосов
/ 20 октября 2011

Я создаю целую настройку макета в XML, а затем пытаюсь присоединить слушателей к кнопкам с помощью findViewById ().Проблема, с которой я столкнулся сейчас, заключается в том, что параметр View, который я получаю в методе, не содержит идентификатор представления, на которое я нажал: 830009633920 против 2131099657.

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

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

Ответы [ 3 ]

1 голос
/ 20 октября 2011

Как насчет этого:

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;
    }
}
0 голосов
/ 20 октября 2011

Попробуйте пропустить идентификаторы, и просто сравните фактический объект просмотра. так как то так:

@Override
public void onClick(View view) {
    if (view.equals(btnNext)) {
                ...
    }
}
0 голосов
/ 20 октября 2011

Это должно сработать, поэтому мое единственное предположение, не видя остальной части кода или макета, состоит в том, что вы установили обработчики щелчков для двух перекрывающихся элементов.

Если вы планируете сделать так, чтобы переключение проекта библиотеки Android не сработало из-за недавних изменений в цепочке инструментов.

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

В общем, я считаю, что гораздо проще использовать анонимный класс, который щелкает дескриптор, чем большой отдельный обработчик.

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

Вы можете попробовать этот подход просто для отладки того, что элемент, который вы ожидаете получить за клик, это то, что вы нажимаете, чтобы убедиться, что у вас нет проблем с макетом.

...