Android Studio-按钮点击崩溃(简单)
我是Android Studio的新手,无论出于什么原因,如果我能得到一些帮助的话,我会遇到非常奇怪的错误 我有一个非常基本的代码,可以在点击按钮时将我的按钮文本从“button”更改为“clicked!”。但是,每次我按下按钮,应用程序就会崩溃,我在模拟器上看到“Appname已停止” 不可思议的是,在我的activity_main.xml设计视图中,onClick下拉列表显示了两个同名函数() 然而,该代码仅在选择底部代码时有效。每次我运行应用程序时,它都会取消选择底部的应用程序,然后重新选择顶部的应用程序,结果只是停止工作 以下是我的主要活动:Android Studio-按钮点击崩溃(简单),android,Android,我是Android Studio的新手,无论出于什么原因,如果我能得到一些帮助的话,我会遇到非常奇怪的错误 我有一个非常基本的代码,可以在点击按钮时将我的按钮文本从“button”更改为“clicked!”。但是,每次我按下按钮,应用程序就会崩溃,我在模拟器上看到“Appname已停止” 不可思议的是,在我的activity_main.xml设计视图中,onClick下拉列表显示了两个同名函数() 然而,该代码仅在选择底部代码时有效。每次我运行应用程序时,它都会取消选择底部的应用程序,然后重新选
package com.example.john.ameladay;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
public Button melButtonCode;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void buttonPress(View v){
melButtonCode = (Button) v;
((Button) v).setText("Has been clicked!");
}
}
这是我的活动_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
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.john.ameladay.MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/mainText"
android:id="@+id/textView" />
<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:src="@drawable/mela"
android:id="@+id/melPhoto" />
<Button
android:text="Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_toRightOf="@+id/textView"
android:layout_toEndOf="@+id/textView"
android:layout_marginLeft="32dp"
android:layout_marginStart="32dp"
android:layout_marginBottom="43dp"
android:id="@+id/button"
android:onClick="buttonPress (MainActivity)" />
任何帮助都将不胜感激 只需在按钮中替换此标签即可 删除此文件
android:onClick="buttonPress (MainActivity)"
android:onClick="buttonPress"
并粘贴此
android:onClick="buttonPress (MainActivity)"
android:onClick="buttonPress"
根据我的说法,这是设置点击按钮的更好方法
public class MainActivity extends AppCompatActivity {
public Button melButtonCode;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
melButtonCode = (Button).findViewById(R.id.button);//find button by Id
melButtonCode.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
melButtonCode.setText("Has been clicked!");
}
});
}
}
解决您的问题
更换它
android:onClick="buttonPress (MainActivity)"
与
android:onClick="buttonPress"
更好的方法是,使用
findViewById()
方法在Java代码中获取对按钮的引用,并为按钮设置OnClickListener
对于您当前的问题,请使用
android:onClick="buttonPress"
而不是
android:onClick="buttonPress (MainActivity)"
简单。你应该写:
android:onClick="buttonPress"
为什么会发生
如果您编写了
buttonPress(MainActivity)
,Android会尝试查找buttonPress(MainActivity)
方法(不是MainActivity.buttonPress()
),但MainActivity没有buttonPress(MainActivity)
方法。因此,错误发生了。当您处于instantrun模式时,使该方法受公共保护有效,但在不处于instantrun模式时无效。不知道为什么 请共享崩溃报告您在哪里调用buttonPress函数?使用onclicklistner而不是onclick并在按钮上显示toast或任何内容单击如下:首先找到您的ButtonMemberButtonCode=(button)findviewbyid(R.id.button)的id;应该公开哪些方法?考虑添加一些代码来描述公开哪种方法。