Android Option Menu не работает должным образом; что мне не хватает? - PullRequest
1 голос
/ 23 июня 2011

Я некоторое время отсутствовал на Java - функциональное программирование было моей музой - и недавно решил вернуться с помощью приложения для Android.Дела идут хорошо.Синтаксис Javas в основном у меня в голове, принципы разработки ОО немного ржавые, но я не боюсь перефакторинга.

Одна проблема, с которой я столкнулся, была с меню опций в платформе.Я загружаю их из файла XML через меню-инфлятор в моей основной деятельности (ниже), и я вижу их!Но когда я нажимаю на них, все становится странным - но не то, чтобы видеть, как бабушка красуется со своим лучшим другом, гораздо менее странно.

Почему-то, когда я нажимаю первую кнопку, я получаю дружелюбныйdefault сообщение в примере кода ниже: «Это не вариант, придурок!».И когда я нажимаю второй, сообщение «Добавление одного».Я один на один как-то!Но как?но почему!?

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/add_single_id"
          android:title="@string/add_one" />
    <item android:id="@+id/add_multi_id"
          android:title="@string/add_multi" />
</menu>

... который загружается инфлятором меню ...

public boolean onCreateOptionsMenu( Menu menu ){
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.option_menu, menu);
    return true;
}

... и, наконец, слушателем выбранных элементов.

public boolean onOptionsItemSelected( MenuItem item ){
    switch( item.getItemId() ){
        case R.id.add_single_id:
            Toast.makeText(this, "Adding One", Toast.LENGTH_LONG).show();
            add_single();
            break;
        case R.id.add_multi_id:
            Toast.makeText(this, "Adding n", Toast.LENGTH_LONG).show();
            Intent i = new Intent(this, SelectMulti.class);
            startActivityForResult(i, ACTIVITY_LOADMULTI);
            break;
        default:
            Toast.makeText(this, "That's not an option, moron!", Toast.LENGTH_LONG).show();
            return false;
    }
    return true;
}

Ответы [ 2 ]

3 голосов
/ 23 июня 2011

Это случается со мной много раз, когда я разрабатываю android на Eclipse, а очистка и перестройка проекта исправляет его, поскольку он воссоздает файл ресурсов Android и корректно сопоставляется с вашими идентификаторами UI.

1 голос
/ 23 августа 2012

В вашем XML у вас есть ID = add_one_id, но в коде вы используете R.id.add_single_id

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...