如何在开关案例中添加项目标题

时间:2015-03-12 22:37:49

标签: android android-activity android-actionbar fragment

我正在将一个切换案例转换为onOptionsItemSelected,我想为此项目分配一个标题值,但它不起作用。

当我使用menu.Android时,R.id.numTaula案例出现了问题:

  

限定符必须是表达式。

@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);
}

2 个答案:

答案 0 :(得分:0)

在行中:

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

你究竟在哪里定义什么是numale?它是String?

答案 1 :(得分:0)

这可能是问题所在: https://stackoverflow.com/a/9093594/535762

你有图书馆项目吗?如果是这样,不要使用交换机作为资源ID,它们不再是常量。

编辑:

好的,我误读了你的问题,所以这是因为某种类型的问题。

但首先尝试这样:

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吗?发布代码。