在Android上没有调用onClick方法

时间:2011-12-03 03:33:33

标签: android onclick

我正在做最简单的onClick模型,无法启动onClick方法。我知道这很简单,我是Android新手。任何帮助表示赞赏。

package com.bordeloniphone.timeentry;

import android.app.Activity;
import android.os.Bundle;

import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class TimeEntryActivity extends Activity implements OnClickListener{
    /** Called when the activity is first created. */

    Button okButton;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        okButton = (Button) findViewById(R.id.btnOK);
        okButton.setText(":)");
        okButton.setOnClickListener(this);
        //setContentView(okButton);

    }

    public void onClick(View v) {
        Log.d("TEST", "TEST");
        Toast.makeText(this, "TEST", Toast.LENGTH_SHORT).show();

    }

}

这是main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/btnOK"
        android:layout_width="80dp"
        android:layout_height="wrap_content"
        android:text="OK" />

</LinearLayout>

6 个答案:

答案 0 :(得分:7)

经过多次焦虑和咬牙切齿之后,我想通了。我不得不删除模拟器设备并添加一个新设备,现在它就像一个冠军。我感谢所有想要帮助的人。

答案 1 :(得分:6)

不要将onClicklistener设置为此,请尝试以下方法:

okButton.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            Log.d("TEST", "TEST");
            Toast.makeText(this, "TEST", Toast.LENGTH_SHORT).show();
        }
    });

答案 2 :(得分:4)

您应该尝试清理项目或尝试重新启动Eclipse或您正在使用的任何其他编辑器,因为它是有效的代码并且应该可以正常工作。

<强>更新

此外,您应该检查Logcat,是否获得Log.d("TEST", "TEST");的输出,因为您的Toast似乎以错误的方式实现。

Toast.makeText(this, "TEST", Toast.LENGTH_SHORT).show(); // wrong
Toast.makeText(Activity_name.this, "TEST", Toast.LENGTH_SHORT).show(); // correct

在监听器内的Toast中使用this意味着您正在引用监听器,实际情况并非如此。您必须引用活动本身,以便更好地使用Activity_name.this

答案 3 :(得分:0)

按钮iv_StyleInspiration_Back =(按钮)findViewById(R.id.iv_StyleInspiration_Back); iv_StyleInspiration_Back.setOnClickListener(本);

试试这个当你在你的活动中实现onclick时,你需要设置如上所述以使其适用于所有控件,并且onclick应该看起来如下所示

@Override
    public void onClick(View pView) {
        if (null != pView) {
            switch (pView.getId()) {
                case  R.id.iv_StyleInspiration_Back:
                    //do what you want
                                    break;
                default:
                    break;
            }
        }
    }

答案 4 :(得分:-1)

检查三个步骤:

  1. 按ID正确找到按钮
  2. 将按钮链接到监听器。 (添加actionListener)
  3. 在实现actionListener类时指定此按钮的条件。

答案 5 :(得分:-2)

尝试点击按钮

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<Button
    android:id="@+id/btnOK"
    android:layout_width="80dp"
    android:layout_height="wrap_content"
    android:text="OK"
    android:clickable="true" />