有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

未调用java OnClick方法

这是我的密码:

public class MainActivity extends Activity implements View.OnClickListener {

    Button b;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        b = (Button) findViewById(R.id.button1);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.button1:
                Toast.makeText(getApplicationContext(), "onClick method was called", Toast.LENGTH_LONG).show();
                break;
            }
        }
    }

由于某种原因,什么都没有发生,也没有祝酒词出现。我错过什么了吗? 谢谢


共 (2) 个答案

  1. # 1 楼答案

    写下:

    b.setOnClickListener(this);
    

    onCreate中:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        b = (Button) findViewById(R.id.button1);
        b.setOnClickListener(this);
        }
    

    必须为按钮设置一个侦听器onClick才能工作

  2. # 2 楼答案

    作为Vipul answer的替代方法,您还可以在XML布局文件的Button标记中添加属性onClick。 例如:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context=".MainActivity" >
    
        <Button id="@+id/button1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:onClick="myMethod" />
    
    </RelativeLayout>
    

    在你的主要活动中。java,删除View.OnClickListener实现的接口(感谢@donfuxx)并添加以下方法:

    public void myMethod(View v) {
        //do something
    }