0

我有一个具有相对布局的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。任何可以猜出问题可能是什么。请帮助!

4

11 回答 11

8

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

    btncalcu.setOnClickListener(new OnClickListener() {

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

        }
    });

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

import android.view.View.OnClickListener;
于 2013-01-04T05:01:02.367 回答
3

试试这个。

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;
于 2013-01-04T05:15:50.913 回答
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;

于 2013-01-04T05:14:59.777 回答
1

只需1个小费

检查按钮是否启用

在xml中

机器人:启用=“假”

安卓:启用=“真”

于 2018-11-18T19:29:56.603 回答
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,因此建议使用当前活动。

于 2013-01-04T05:01:52.393 回答
0

而不是使用getBaseContext(),使用您拥有的上下文v.getContext()

解析度:

Toast.makeText(v.getContext(), "a", Toast.LENGTH_LONG).show();
于 2013-01-04T05:02:36.897 回答
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();
            }

        });
于 2013-01-04T05:08:19.910 回答
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();
        }
    });

为我工作。

于 2013-01-04T05:11:33.983 回答
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;
于 2013-01-04T05:18:18.347 回答
0

使用View.OnClickListener()而不是Button.OnClickListener(). 它会解决你的问题

getBaseContext()毫无疑问对你有用,但最好使用ActivityName.thisfor Toasts,以防止任何内存泄漏。

于 2013-01-04T05:30:17.633 回答
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>
于 2016-02-01T08:38:17.490 回答