代码之家  ›  专栏  ›  技术社区  ›  Alexa289

如何解决在onClick方法中删除“view”时出现的错误?

  •  0
  • Alexa289  · 技术社区  · 7 年前

    enter image description here

    在我设置的活动课上 loginButtonTapped 方法如下:

    class LoginActivity : AppCompatActivity(), View.OnTouchListener  {
    
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
    
        }
    
        fun loginButtonTapped(view: View) {
    
        }
    
    }
    

    在build选项卡中,我有一个警告,据说从未使用过parameter view:

    enter image description here

    是的,我从来没有用过视图参数 登录按钮

    然后我试着删除这个参数 fun loginButtonTapped() {}

    但更糟糕的是,我在运行应用程序时崩溃了:

    进程:com.xxxx.lakuinkotlin,PID:10922 java.lang.IllegalStateException:在的父或祖先上下文中找不到方法loginButtonTapped(视图) 在视图类上定义的android:onClick属性 '登录按钮\登录活动'

    那么,如何避免“从未使用过参数视图”和崩溃呢?这里出了什么问题?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Mahdi-Malv    7 年前

    这就是Android中XML和Java代码交互的方式。
    必须将视图作为函数参数,才能获得单击视图的实例。

    您可以尝试以下操作之一:

    • 忽略线头检查 压制它 (按下黄色灯泡)。
    • 使用 .setOnClickListener() 观点和方法 在侦听器的实现中传递no-param函数 onClick(View)
    TextView t;
    t.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
             onClickTextData(); // No param
         }
    });
    
    //All arguments to the listener method are optional.
    
    @OnClick(R.id.submit)
    public void submit() {
      // TODO submits data to server...
    }
    

    因为在onCreate中调用该方法时没有获取按钮。为了访问该按钮,您需要有一个视图。 因此,为了避免崩溃,必须将视图实例添加到方法中。

    正如你所看到的那样 Could not find method loginButtonTapped(View) 在错误文本中。也就是说,这种实施方式 onClick 需要一个带有 view