Android SDK Tools Rev.17 - onClick - не найден соответствующий обработчик метода - PullRequest
1 голос
/ 24 марта 2012

Я обновил Android SDK Tools до версии 17, и после того, как я открыл Eclipse, я обнаружил список новых ошибок в представлении «Проблемы», которых не было до обновления.Эти ошибки были в файлах XML Layout, где я определил атрибут onClick для кнопок.При наведении указателя мыши на сообщение об ошибке:

"Соответствующий обработчик метода 'public void @ string / timespanDefinition_btnSave_Click (android.view.View)' not found"

возвращено.Я уже определил соответствующий обработчик метода и строковое представление для этого имени события.Какова причина и решение этой проблемы?

Какой-то код:

XML Layout

<ToggleButton
        android:id="@+id/timespanDefinition_tglVibration"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:checked="true"
        android:onClick="@string/timespanDefinition_tglVibration_Click"
        android:saveEnabled="true" />

Деятельность, которая раздувает XML Layout

public class TimespanDefinitionActivity extends Activity

{

// -- Attributes -- //

private long mRowId = -1;
private StringBuilder mBitWeekDays;
private String mTitle;

private EditText txtTitle;
private TabHost tabHost;
private TimePicker tmepkrStart;
private TimePicker tmepkrEnd;
private CheckBox[] weekDays;
private SeekBar skbrVolume;
private ToggleButton tglVibration;

// -- Class Events -- //

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);

    setContentView(R.layout.timespan_definition);

    initializeResources();

    Bundle extras = getIntent().getExtras();

    // Get the time-span Row ID
    mRowId = (extras != null) ? extras.getLong(RVSUtilities.getDefaultPackage() + TimespanScheduleTable.KEY_ROWID)
            : -1;

    populateResources();
}

// -- User Events -- //

public void tglVibration_Click(View v)
{
    if (((ToggleButton) v).isChecked())
    {
        Vibrator vibrate = (Vibrator) getSystemService(VIBRATOR_SERVICE);
        vibrate.vibrate(1000);
    }
}

strings.xml:

<string name="timespanDefinition_tglVibration_Click">tglVibration_Click</string>

Примечание. Приложение предназначено для Android 2.3.3, в частности для Google API версии 10

Спасибо.

Ответы [ 3 ]

5 голосов
/ 24 марта 2012

Какова причина и решение этой проблемы?

Причиной является использование строкового ресурса для имени метода.

Решение состоит в том, чтобы получитьизбавьтесь от строкового ресурса и поместите имя метода непосредственно в атрибут android:onClick.

ОБНОВЛЕНИЕ : если маркеры не исчезают, щелкните правой кнопкой мыши проект и выберитеИнструменты Android> Очистить маркеры ворса.

1 голос
/ 27 мая 2018

У меня была такая же проблема ...

  1. check tools: context = ". MainActivity" в вашем XML, если это указывает на правильную активность Java
  2. Перестроить или очистить проект от сборки -> очистить проект в верхнем меню
  3. убедитесь, что у вас есть View в параметрах вашей функции public void onclickdo (View view)

надеюсь, что это полная помощь

1 голос
/ 22 апреля 2012

Вскоре после обновления / установки отображаются ошибки. Но повторный запуск Lint устраняет проблему.

Проект правой кнопкой мыши -> Инструменты Android -> Нажмите «Выполнить Lint: проверка на наличие общих ошибок»

...