Android Studio Databinding:我可以在onKey事件中访问绑定的内容吗?

问题描述 投票:0回答:1

我试图实现一些按钮事件,而不引用XML-File和数据绑定而不是FindByID。这可能吗?我遇到的问题是,在OnKeyListener中,我尝试获取键入文本的绑定InputBox似乎无法访问(this.binding显示为红色,我把它加粗)。这是错误的做法还是我犯了错误?我想避免使用FindByID-Lines。

this.binding =
            DataBindingUtil.setContentView(this, R.layout.content_main);
    this.binding.EditNumber.setText("553");

    this.binding.EditNumber.setOnKeyListener(new OnKeyListener()
    {
        public boolean onKey(View v, int keyCode, KeyEvent event)
        {
            if (event.getAction() == KeyEvent.ACTION_DOWN)
            {
                switch (keyCode)
                {
                    case KeyEvent.KEYCODE_DPAD_CENTER:
                    case KeyEvent.KEYCODE_ENTER:
                        Cat supertest = Manager.CreateMainCat(this.**binding**.EditNumber.toString());
                        this.**binding**.DisplayCurrentBudget.setText(supertest.getsName());
                        return true;
                    default:
                        break;
                }
            }
            return false;
        }
    });

非常感谢你

java android-studio data-binding event-handling onkeylistener
1个回答
0
投票

奇怪的是,当我将绑定放在另一个方法中时,它可以工作:

    (...)
            this.binding.Submit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                xxx();
            }
        });
    }

    public void xxx()
    {
        Cat supertest = Manager.CreateMainCat(this.binding.EditNumber.getText().toString());
        this.binding.DisplayCurrentBudget.setText(supertest.getsName());
    }

但这不是:

this.binding.Submit.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Cat supertest = Manager.CreateMainCat(this.binding.EditNumber.getText().toString());
            this.binding.DisplayCurrentBudget.setText(supertest.getsName());
                }

问题很容易解决,但如果有人有答案,我会非常有兴趣知道会发生什么事:)

© www.soinside.com 2019 - 2024. All rights reserved.