【问题标题】:Why does the button needs to be clicked twice to work [closed]为什么按钮需要单击两次才能工作[关闭]
【发布时间】:2014-06-25 14:04:31
【问题描述】:

我已经创建了这个有一个按钮的应用程序,应用程序中的一切都很好,除了如果我想让按钮工作我必须按两次,而不是像想象的那样按一次。 这是一段代码:

//CODE:
public void INCASEOFCLICK(View view) {
    Button B = (Button) findViewById(R.id.B);
    B.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            EditText A = (EditText) findViewById(R.id.A);
            TextView C = (TextView) findViewById(R.id.C);
            String AA=A.getText().toString();
            if(A.length()>0){
                C.setText(AA);
            }else{
                Toast.makeText(getApplicationContext(), "TRY AGAIN", Toast.LENGTH_LONG).show();
            }
        }
    });

}

【问题讨论】:

  • INCASEOFCLICK 已经是您的 Button 的 onClickListener。
  • 这与onClickListeners的推荐方法相差甚远。首先你有一个点击监听器INCASEOFCLICK,然后在里面你再次setOnClickListener到按钮。这不是应该的,请参考官方文档或在线好的教程。
  • 将你所有的逻辑都移到INCASEOFCLICK987654325@里面的onClick里面
  • 我做了另一个 OnClickListener,因为当我只留下一个时,ClickListner 只工作一次。
  • 那是因为您对Button B 的定义/实例化是错误的。一旦您单击它,您将再次实例化它,然后没有分配任何 clicklistener。参考@AndroidWarrior的回答

标签: java android button


【解决方案1】:

您所做的是在第一次单击时设置 clicklistener,而在第二次单击时您将获得响应。通常,如果您在onCreate() 中编写下面提到的代码,您的按钮将按预期工作。

Button B = (Button) findViewById(R.id.B);
B.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            EditText A = (EditText) findViewById(R.id.A);
            TextView C = (TextView) findViewById(R.id.C);
            String AA=A.getText().toString();
            if(A.length()>0){
                C.setText(AA);
            }else{
                Toast.makeText(getApplicationContext(), "TRY AGAIN",
                Toast.LENGTH_LONG).show();
            }
        }
    });

【讨论】:

  • 我不知道该怎么做。
  • @user3775508 只需将上面的代码复制到您的onCreate() 方法中并删除与您的按钮相关的所有其他代码,它应该可以正常工作。
  • 谢谢。它有效,但不是使用 onCreate() 而是删除第 4、5、6 行。谢谢
猜你喜欢
  • 2019-05-30
  • 2020-12-07
  • 1970-01-01
  • 2017-07-24
  • 2017-05-18
  • 1970-01-01
  • 1970-01-01
  • 2017-09-23
  • 1970-01-01
相关资源
最近更新 更多