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



我是Android Studio的新手,无论出于何种原因,如果我能得到一些帮助。

我有一个非常基本的代码,应该在按钮上单击"按钮"的"按钮"更改"单击!"的文本。但是,每次按下按钮时,应用程序崩溃,并且我会在模拟器上获得" AppName已停止"。

令人难以置信的很奇怪的是,在我的Activity_main.xml设计视图中,OnClick下拉列表显示了两个相同名称的功能(https://puu.sh/t2h5i/42ad4379d6.png)

h atever仅在选择底部时才有效。每次运行应用程序时,都会取消选择底部并重新选择顶部,只是停止工作。

这是我的主要目的:

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!");
    }
}

这是我的activity_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"

为什么发生

如果您编写了buttonPress (MainActivity),则Android尝试查找buttonPress (MainActivity)方法(不是MainActivity.buttonPress()),但是MainActivity没有buttonPress (MainActivity)方法。因此发生了错误。

只需在按钮

中替换此标签

删除此

android:onClick="buttonPress (MainActivity)"

并粘贴此

android:onClick="buttonPress"

一种更好的方法是,使用findViewById()方法获取对Java代码中的按钮,然后将OnClickListener设置为按钮。

对于您当前的问题,请使用

android:onClick="buttonPress"

而不是

android:onClick="buttonPress (MainActivity)"

根据我这是设置单击按钮

的更好方法
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"

在您处于instantrun模式时,将方法公开 - 而不是在不进行时。不知道为什么!

最新更新