单击时按钮不起作用。它虽然是动画,但我没有收到任何错误。即使我使用'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();
}
答案 0 :(得分:1)
而不是使用v.getContext()尝试 getBaseContext()。这可能会解决问题。
答案 1 :(得分:0)
也许你的Toast不起作用。您是否尝试在onClick上添加一个简单的日志来检查?
如果是这种情况,请尝试Chiro answer(getBaseContext())。
答案 2 :(得分:0)
Toast.makeText(activityname.this,“Text Message”,Toast.LENGTH_LONG).show();