android onclicklistener不工作(尽管注册)

时间:2013-11-15 06:27:33

标签: android onclicklistener

我有一个作为主题对话框运行的活动。这是按钮clicklistener的代码。但是控件永远不会进入onClick()。控制台中没有错误。在logcat中我得到了这个(绿色) - 应用程序可能在主线程中做了太多工作。

 @Override
protected void onCreate(Bundle savedInstanceState) {
  ....
 var_btnDisconnectDone = (Button) findViewById(R.id.btnDisconnectDone);
 var_btnDisconnectDone.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            intFromTimeH = Integer.parseInt(var_txtFromH.getText().toString());
            intFromTimeM = Integer.parseInt(var_txtFromM.getText().toString());
            intToTimeH = Integer.parseInt(var_txtToH.getText().toString());
            intToTimeM = Integer.parseInt(var_txtToM.getText().toString());
        }
    });

XML:

 <Button
    android:id="@+id/btnDisconnectDone"
    ...
    android:onClick="what do I add here??"
    android:text="@string/btnSave_hint" />

1

3 个答案:

答案 0 :(得分:1)

使用@Override

    var_btnDisconnectDone.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                  intFromTimeH = Integer.parseInt(var_txtFromH.getText().toString());
    intFromTimeM = Integer.parseInt(var_txtFromM.getText().toString());
    intToTimeH = Integer.parseInt(var_txtToH.getText().toString());
    intToTimeM = Integer.parseInt(var_txtToM.getText().toString()); 
                }
            });

从XML

中删除此行android:onClick="what do I add here??"

答案 1 :(得分:1)

如果已定义,则只需编写要在xml文件中执行click事件时要执行的方法名称。并在类文件中创建方法并在其中编写逻辑,只要单击该按钮,它就会自动执行。

在API级别4中添加了

android:onClick,以使其更容易,更像Javascript-web,并从XML驱动所有内容。它内部的作用是在OnClickListener上添加Button

以下是android:onClick="DoIt"内部使用的内容:

Button button= (Button) findViewById(R.id.buttonId);
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
       //Your logic here.
    }
});

与XML配置一样,使用android:onClick进行权衡的唯一方法就是添加动态内容变得有点困难(以编程方式,您可以决定添加一个或另一个侦听器,具体取决于您的变量)。但是,通过在DoIt方法中添加测试,很容易就会失败。

如果你想从xml定义它,那么按以下步骤操作:

<Button
    android:id="@+id/btnDisconnectDone"
    ...
    android:onClick="ClickEvent"
    android:text="@string/btnSave_hint" />

在你的类文件中写一个方法。

  public void ClickEvent(View v){
   //Your logic here.
    }

答案 2 :(得分:0)

你没有覆盖点击功能

看到这个并检查它是否有效

     var_btnDisconnectDone.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                      intFromTimeH = Integer.parseInt(var_txtFromH.getText().toString());
        intFromTimeM = Integer.parseInt(var_txtFromM.getText().toString());
        intToTimeH = Integer.parseInt(var_txtToH.getText().toString());
        intToTimeM = Integer.parseInt(var_txtToM.getText().toString()); 
                    }
                });