Я делаю переключение на onOptionsItemSelected, и я хочу присвоить значение заголовка для этого элемента, но это не работает.

Проблема возникает в случае R.id.numTaula, когда я использую menu.Android говорит:

Квалификатор должен быть выражением.

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // toggle nav drawer on selecting action bar app icon/title

    if (mDrawerToggle.onOptionsItemSelected(item)) {
        return true;
    }

    // Handle action bar actions click
    switch (item.getItemId()) {
        case R.id.action_settings:
            return true;

        case R.id.carrito:
            carrito c = new carrito();
            FragmentManager fm = getFragmentManager();
            FragmentTransaction ft = fm.beginTransaction();
            ft.replace(R.id.frame_container, c);
            ft.commit();
            return true;

        case R.id.alerta:
            AlertDialog.Builder cambrer = new AlertDialog.Builder(this);

            cambrer.setTitle("Demanar cambrer");
            cambrer.setMessage("Està seguir que desitja l'atenció del cambrer?");


            cambrer.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int whichButton) {
                    alertaCambrer = true;
                }
            });

            cambrer.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int whichButton) {
                    alertaCambrer = false;
                }
            });

            cambrer.show();
            break;

        case R.id.numTaula:

            AlertDialog.Builder AlertTaula = new AlertDialog.Builder(this);

            AlertTaula.setTitle("Numero de taula");
            AlertTaula.setMessage("Introdueix el numero de taula");

            // Set an EditText view to get user input
            final EditText input = new EditText(this);
            input.setInputType(InputType.TYPE_CLASS_NUMBER);
            input.setRawInputType(Configuration.KEYBOARD_12KEY);
            AlertTaula.setView(input);

            AlertTaula.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int whichButton) {
                    numTaula = input.getText().toString();
                    menu.findItem(R.id.numTaula).setTitle(numTaula);

                }

            });


            AlertTaula.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int whichButton) {
                    // Canceled.
                }
            });


            AlertTaula.show();
            break;
        default:
            return super.onOptionsItemSelected(item);
    }return super.onOptionsItemSelected(item);
}
0
user4385866 13 Мар 2015 в 01:37

2 ответа

Лучший ответ

Вероятно, в этом проблема: https://stackoverflow.com/a/9093594/535762

У вас есть проект библиотеки? Если это так, не используйте переключатель для идентификаторов ресурсов, они больше не являются константами.

РЕДАКТИРОВАТЬ:

Хорошо, я неправильно понял вашу проблему, так что это из-за какой-то проблемы с типом.

Но сначала попробуйте вот так:

EditText input = new EditText(this);
input.setInputType(InputType.TYPE_CLASS_NUMBER);
input.setRawInputType(Configuration.KEYBOARD_12KEY);
AlertTaula.setView(input);

AlertTaula.setPositiveButton("Ok", new DialogInterface.OnClickListener() {

        public EditText input;

        // init method to set init values
        public DialogInterface.OnClickListener init(EditText input) {
            this.input = input;
            return this;
        }

        public void onClick(DialogInterface dialog, int whichButton) {
             menu.findItem(R.id.numTaula).setTitle(input.getText().toString());
        }

}.init(input));

Вам не нужны финальные материалы для реализации вашего интерфейса.

Тогда что такое numTaula? Вроде цифра? Тип действительно String? Разместите код.

0
Community 23 Май 2017 в 10:27

В линии:

numTaula = input.getText().toString();

Где именно вы определяете, что такое нумале? Это строка?

0
yshahak 12 Мар 2015 в 22:52