按钮在Android中不起作用

时间:2017-02-22 17:37:37

标签: java android xml android-studio

单击时按钮不起作用。它虽然是动画,但我没有收到任何错误。即使我使用'this.getApplicationContext()','view.getContext()或'data.this.getApplicationContext',它也不起作用。 “数据”类中的代码如下所示。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.data);

    Button button = (Button) findViewById(R.id.data_btn_copy_opd_num);
    button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            Toast.makeText(v.getContext(), "Text Message", Toast.LENGTH_LONG).show();
        }
    });`

XML文件:

<?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"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/data"
    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="com.example.android.stark_student_clinic.data"
    android:filterTouchesWhenObscured="false"
    android:fitsSystemWindows="true"
    android:gravity="top|right"
    android:focusable="false">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/data_scrollview">

        <LinearLayout
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/data_linearlayout">

            <GridLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_alignParentStart="true"
                android:id="@+id/data_gridlayout"
                android:layout_gravity="center">

                <EditText
                    android:layout_width="113dp"
                    android:layout_height="55dp"
                    android:inputType="textPersonName"
                    android:text="Name : "
                    android:ems="10"
                    android:id="@+id/data_txt_student_name"
                    android:layout_row="0"
                    android:layout_column="2"
                    android:enabled="false"
                    android:textColorLink="?attr/colorPrimaryDark"
                    android:textColor="?attr/colorPrimaryDark" />

                <ImageView
                    android:layout_height="78dp"
                    app:srcCompat="@mipmap/ic_launcher"
                    android:id="@+id/data_imageview_photo"
                    android:layout_toStartOf="@+id/linearLayout"
                    android:layout_width="71dp"
                    android:layout_alignBottom="@+id/linearLayout"
                    android:layout_row="0"
                    android:layout_column="0"
                    android:layout_columnSpan="2"
                    android:layout_rowSpan="2"
                    android:layout_gravity="center"/>

                <EditText
                    android:layout_width="122dp"
                    android:inputType="textPersonName"
                    android:text="OPD Number : "
                    android:ems="10"
                    android:id="@+id/data_txt_student_opd_number"
                    android:layout_alignParentTop="true"
                    android:layout_alignParentEnd="true"
                    style="@android:style/Widget.Material.EditText"
                    android:selectAllOnFocus="true"
                    android:layout_height="53dp"
                    android:enabled="false"
                    android:clickable="false"
                    android:contextClickable="false"
                    android:cursorVisible="false"
                    android:textColor="?attr/colorPrimaryDark"
                    android:layout_column="2"
                    android:layout_row="1"/>

                <EditText
                    android:layout_width="121dp"
                    android:layout_height="wrap_content"
                    android:inputType="textPersonName"
                    android:text="DOB : "
                    android:ems="10"
                    android:id="@+id/data_txt_student_dob"
                    android:layout_column="2"
                    android:layout_row="2"
                    android:textColor="?attr/colorPrimaryDark"
                    android:enabled="false" />

                <Button
                    android:text="Button"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/data_btn_copy_opd_num"
                    android:layout_column="3"
                    android:layout_row="1"
                    android:gravity="center"
                    android:layout_gravity="center" />

            </GridLayout>

            <TextView
                android:text="Text"
                android:layout_width="match_parent"
                android:layout_height="299dp"
                android:id="@+id/data_lbl_falana_dakana" />

        </LinearLayout>

    </ScrollView>

</RelativeLayout>

此外,onClick属性在定义时不起作用(此处未在发布的代码中完成)并且发出错误:

  

java.lang.IllegalStateException:找不到父或祖先的方法getOPD(View)for android:onClick属性在视图类android.support.v7.widget.AppCompatButton上定义,id为'data_btn_copy_opd_num'

它使用以下语法在类中实现:

public void getOPD(View view) {
    Toast.makeText(this, "Some Stuff", Toast.LENGTH_LONG).show();
}

3 个答案:

答案 0 :(得分:1)

而不是使用v.getContext()尝试 getBaseContext()。这可能会解决问题。

答案 1 :(得分:0)

也许你的Toast不起作用。您是否尝试在onClick上添加一个简单的日志来检查?

如果是这种情况,请尝试Chiro answer(getBaseContext())。

答案 2 :(得分:0)

Toast.makeText(activityname.this,“Text Message”,Toast.LENGTH_LONG).show();