android按钮点击事件对我不起作用

时间:2013-01-04 04:58:37

标签: android button relativelayout

我有一个相对布局的Android应用程序,我已经放置了像这样的按钮控件

<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="wrap_content" >    
<Button
        android:id="@+id/btnCalc"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="708dp"
        android:layout_marginLeft="50dp"
        android:text="@string/btncalc" />
</RelativeLayout>

为了测试这个事件,我已经像这个

一样点击了这个按钮的点击事件
btncalcu=(Button)findViewById(R.id.btnCalc);
        btncalcu.setOnClickListener(new Button.OnClickListener(){
            @Override
            public void onClick(View v)
            {
                Toast.makeText(getBaseContext(), "a", Toast.LENGTH_LONG).show();
                //calc();
            }

        });

问题是,当我运行应用程序时,没有错误或任何异常,但Toast也没有显示任何异常。任何可以猜测问题是什么.Plz帮助!

11 个答案:

答案 0 :(得分:7)

只需尝试这种方式,看看它是否有效,

    btncalcu.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
             Toast.makeText(getBaseContext(), "a", Toast.LENGTH_LONG).show();

        }
    });

并确保您已导入以下内容,

import android.view.View.OnClickListener;

答案 1 :(得分:2)

试试这个。

btncalcu=(Button)findViewById(R.id.btnCalc);
btncalcu.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        Toast.makeText(MainActivity.this, "Calculation Button clicked", Toast.LENGTH_LONG).show();
    }
});

并导入此行

import android.view.View.OnClickListener;

答案 2 :(得分:1)

试试这种方式:

btncalcu=(Button)findViewById(R.id.btnCalc);
    btncalcu.setOnClickListener(new View.OnClickListener(){ <---Change `View.Onclick` instead of `Button`
        @Override
        public void onClick(View v)
        {
            Toast.makeText(YourActivity.this, "a", Toast.LENGTH_LONG).show();
            //calc();
        }
    });

并确保您已导入以下内容,

import android.view.View.OnClickListener;

答案 3 :(得分:0)

使用YourActivity.this作为上下文,请勿使用getBaseContext()

btncalcu=(Button)findViewById(R.id.btnCalc);
        btncalcu.setOnClickListener(new Button.OnClickListener(){
            @Override
            public void onClick(View v)
            {
                Toast.makeText(YourActivity.this, "a", Toast.LENGTH_LONG).show();
                //calc();
            }

        });

上下文用于告诉应用程序在哪里显示Toast,因此建议使用当前活动。

答案 4 :(得分:0)

不使用getBaseContext(),而是使用您拥有v.getContext()

的上下文

分辨率:

Toast.makeText(v.getContext(), "a", Toast.LENGTH_LONG).show();

答案 5 :(得分:0)

btncalcu=(Button)findViewById(R.id.btnCalc);
        btncalcu.setOnClickListener(new Button.OnClickListener(){
            @Override
            public void onClick(View v)
            {
                Toast.makeText(yourActivityclassname.this, "a", Toast.LENGTH_LONG).show();
                //calc();
            }

        });

答案 6 :(得分:0)

像这样使用..

btncalcu..setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
             Toast.makeText(getApplicationContext(), "Clicked Button", Toast.LENGTH_LONG).show();

            // or

             Toast.makeText(YourActivityname.this, "Clicked Button",, Toast.LENGTH_LONG).show();
        }
    });

适合我。希望这会帮助你...

答案 7 :(得分:0)

解决这个问题的方法:

1

btncalcu=(Button)findViewById(R.id.btnCalc);
        btncalcu.setOnClickListener(new OnClickListener(){
            @Override
            public void onClick(View v)
            {
                Toast.makeText(YourActivityname.this, "a", Toast.LENGTH_LONG).show();
                //calc();
            }

        });

2

  btncalcu=(Button)findViewById(R.id.btnCalc);
            btncalcu.setOnClickListener(new OnClickListener(){
                @Override
                public void onClick(View v)
                {
                    Toast.makeText(getBaseContext(), "a", Toast.LENGTH_LONG).show();
                    //calc();
                }

            });

并且必须检查是否已导入此导入:

android.view.View.OnClickListener;

答案 8 :(得分:0)

使用View.OnClickListener()代替Button.OnClickListener()。它将解决您的问题

同样getBaseContext()无疑对您有用,但最好使用ActivityName.this作为Toasts,以防止任何内存泄漏。

答案 9 :(得分:0)

如果您使用listView检查是否已对其应用任何高程。我做了同样的事情,并在listView顶部有浮动按钮,因此按钮永远不会被点击。除非您检查xml文件,否则无法将其删除。我编写的代码仅供您参考。

删除高程并执行onClick。相当合乎逻辑,在你这样做之后工作。

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


    <ListView
        android:id="@+id/fullListViewToDo"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:divider="#F3F3F3"
        android:dividerHeight="8.0sp"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        android:drawSelectorOnTop="false"
        android:elevation="8dp">

    </ListView>

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/todo_fragmentContainer">

    </RelativeLayout>

    <android.support.design.widget.FloatingActionButton android:id="@+id/fab"
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:layout_gravity="bottom|end" android:layout_margin="@dimen/fab_margin"
        android:src="@android:drawable/ic_input_add"
        android:layout_alignParentEnd="true"
        android:layout_alignParentBottom="true" />

</RelativeLayout>

答案 10 :(得分:0)

只需1个提示

检查按钮是否已启用

在xml

  

android:enabled =“ false”

  

android:enabled =“ true”