Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Studio-按钮点击崩溃(简单)_Android - Fatal编程技术网

Android Studio-按钮点击崩溃(简单)

Android Studio-按钮点击崩溃(简单),android,Android,我是Android Studio的新手,无论出于什么原因,如果我能得到一些帮助的话,我会遇到非常奇怪的错误 我有一个非常基本的代码,可以在点击按钮时将我的按钮文本从“button”更改为“clicked!”。但是,每次我按下按钮,应用程序就会崩溃,我在模拟器上看到“Appname已停止” 不可思议的是,在我的activity_main.xml设计视图中,onClick下拉列表显示了两个同名函数() 然而,该代码仅在选择底部代码时有效。每次我运行应用程序时,它都会取消选择底部的应用程序,然后重新选

我是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;应该公开哪些方法?考虑添加一些代码来描述公开哪种方法。