0

我有一个作为主题对话框运行的活动。这是按钮点击监听器的代码。但是控件永远不会进入 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

4

3 回答 3

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

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

于 2013-11-15T06:57:29.520 回答
1

如果您已经定义,那么您只需要在您的 xml 文件中执行单击事件时编写要执行的方法名称。并在您的类文件中创建方法并在其中写入逻辑,只要单击按钮,它将自动执行。

android:onClick在 API 级别 4 中添加以使其更容易、更类似于 Javascript 网络,并从 XML 驱动一切。它在内部做的是OnClickListenerButton.

以下是使用 aandroid:onClick="DoIt"在内部执行的操作:

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

android:onClick像往常一样使用 XML 配置,您使用. 但这很容易通过在DoIt方法中添加测试来解决。

如果您想从 xml 定义它,请执行以下操作:

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

并在您的类文件中编写一个方法。

  public void ClickEvent(View v){
   //Your logic here.
    }
于 2013-11-15T07:04:44.277 回答
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()); 
                    }
                });
于 2013-11-15T06:32:01.527 回答