简体   繁体   English

Android Studio-单击图像按钮后崩溃

[英]Android Studio - image button is crashing after i click on it

I am trying to make some simple image click button to go to another activity but I can't get it to work. 我正在尝试使一些简单的图像单击按钮转到另一项活动,但是我无法使其正常工作。

It says: 它说:

Unfortunately, myapp has stopped.

If I highlighted my android: onClick="myButton" it says Method myButton' is missing in 'MainActivity' in my layout.xml 如果我突出显示了我的android: onClick="myButton"则说Method myButton' is missing in 'MainActivity' in my layout.xml

MainActivity.java MainActivity.java

package com.zemoapps.alarmclockgold;

import android.content.Context;
import android.content.Intent;
import android.graphics.Typeface;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.AttributeSet;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;


//Old code "public class MainActivity extends AppCompatActivity {"
public class MainActivity extends AppCompatActivity {

    private Button myButton;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);



        TextView myTextview = (TextView) findViewById(R.id.RepeatingText);
        TextView myTextview2 = (TextView) findViewById(R.id.CountDownText);
        Typeface myCustomFont = Typeface.createFromAsset(getAssets(), "fonts/AndadaRegular.otf");
        myTextview.setTypeface(myCustomFont);
        myTextview2.setTypeface(myCustomFont);


    }

    public class MyCustomTextView extends TextView {

        public MyCustomTextView(Context context, AttributeSet attrs) {
            super(context, attrs);
            this.setTypeface(Typeface.createFromAsset(context.getAssets(),
                    "fonts/AndadaRegular.otf"));
        }

    }

    public class AlarmPage extends AppCompatActivity {

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            myButton = (Button) findViewById(R.id.RepeatingImage);

            myButton.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {

                    startActivity(new Intent(MainActivity.this, AddAlarm.class));

                }
            });


        }


    }}

Layout.xml Layout.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:andriod="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/BG"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#9e84d3"
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.zemoapps.onething.MainActivity">

<ImageButton
    android:id="@+id/RepeatingImage"
    android:layout_width="200dp"
    android:layout_height="150dp"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:background="#00000000"
    android:contentDescription="@null"
    android:onClick="myButton"
    android:scaleType="fitCenter"
    android:src="@drawable/alarm1" />

</RelativeLayout>

AndroidManifest says there is error too: AndroidManifest说也有错误: 在此处输入图片说明

java.lang.IllegalStateException: Could not find method myButton(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.support.v7.widget.AppCompatImageButton with id 'RepeatingImage'
                                                                                 at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.resolveMethod(AppCompatViewInflater.java:307)
                                                                                 at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:266)
                                                                                 at android.view.View.performClick(View.java:4084)
                                                                                 at android.view.View$PerformClick.run(View.java:16966)
                                                                                 at android.os.Handler.handleCallback(Handler.java:615)
                                                                                 at android.os.Handler.dispatchMessage(Handler.java:92)
                                                                                 at android.os.Looper.loop(Looper.java:137)
                                                                                 at android.app.ActivityThread.main(ActivityThread.java:4745)
                                                                                 at java.lang.reflect.Method.invokeNative(Native Method)
                                                                                 at java.lang.reflect.Method.invoke(Method.java:511)
                                                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
                                                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
                                                                                 at dalvik.system.NativeStart.main(Native Method)

Remove android:onClick="myButton" from ImageButton in your XML. 从XML中的ImageButton中删除android:onClick =“ myButton”。

<ImageButton
    android:id="@+id/RepeatingImage"
    android:layout_width="200dp"
    android:layout_height="150dp"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:background="#00000000"
    android:contentDescription="@null"
    android:onClick="myButton" // remove this line from your xml
    android:scaleType="fitCenter"
    android:src="@drawable/alarm1" />

This is because you have extended AppCompatActivity. 这是因为您扩展了AppCompatActivity。 It will work fine if you extend Activity. 如果您扩展“活动”,它将正常工作。

You didn't define method for imagebutton click,you should add it to MainActivity like this: 您尚未定义imagebutton单击的方法,应将其添加到MainActivity如下所示:

public void myButton(View view){
}

Remove the next row from you ImageButton node: 从ImageButton节点中删除下一行:

android:onClick="myButton"

When you add it, Android will expect a method named "myButton" in your Activity. 当您添加它时,Android将在您的Activity中使用一个名为“ myButton”的方法。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM