Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.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
Java “如何调试”;在android的父或祖先上下文中找不到showTimePickerDialog(视图)方法;?_Java_Android_Android Studio - Fatal编程技术网

Java “如何调试”;在android的父或祖先上下文中找不到showTimePickerDialog(视图)方法;?

Java “如何调试”;在android的父或祖先上下文中找不到showTimePickerDialog(视图)方法;?,java,android,android-studio,Java,Android,Android Studio,当我启动应用程序时,它会正常工作,直到按下按钮时关闭。我在下面留下我的代码和错误: package app.alexdickson.com.workout1; import android.app.Dialog; import android.app.TimePickerDialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; impo

当我启动应用程序时,它会正常工作,直到按下按钮时关闭。我在下面留下我的代码和错误:

package app.alexdickson.com.workout1;

import android.app.Dialog;
import android.app.TimePickerDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageButton;
import android.widget.TimePicker;
import android.widget.Toast;


public class Main2Activity extends AppCompatActivity implements View.OnClickListener {
    ImageButton botoFlexio;
    ImageButton botoAbdominals;
    static final int DIALOG_ID = 0;
    int hour_x;
    int minute_x;
    int hourDefinitivaFlexio;
    int minuteDefinitvaFlexio;
    int hourDefinitivaAbs;
    int minuteDefinitivaAbs;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);

        botoFlexio = (ImageButton) findViewById(R.id.botoFlexio);
        botoAbdominals = (ImageButton) findViewById(R.id.botoAbdominals);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.botoFlexio:
                botoFlexio.setBackgroundResource(R.drawable.flexioclicat);
                showDialog(DIALOG_ID);
                hourDefinitivaFlexio = hour_x;
                minuteDefinitvaFlexio = minute_x;
                break;

            case R.id.botoAbdominals:
                botoFlexio.setBackgroundResource(R.drawable.abdominalsclicat);
                showDialog(DIALOG_ID);
                hourDefinitivaAbs = hour_x;
                minuteDefinitivaAbs = minute_x;
                break;
        }
    }

    @Override
    protected Dialog onCreateDialog(int id) {
        if (id == DIALOG_ID)
            return new TimePickerDialog(Main2Activity.this, kTimePickerListener, hour_x, minute_x, true);
        return null;
    }

    protected TimePickerDialog.OnTimeSetListener kTimePickerListener =
            new TimePickerDialog.OnTimeSetListener() {
                @Override
                public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                    hour_x = hourOfDay;
                    minute_x = minute;
                    Toast.makeText(Main2Activity.this, hour_x + ": " + minute_x, Toast.LENGTH_LONG).show();
                }
            };
}
以下是我的错误:

03-25 22:02:31.805 1555-1555/? E/AndroidRuntime: FATAL EXCEPTION: main
   Process: app.alexdickson.com.workout1, PID: 1555
            java.lang.IllegalStateException: Could not find method showTimePickerDialog(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.support.v7.widget.AppCompatImageButton with id 'botoAbdominals'
            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:4780)
            at android.view.View$PerformClick.run(View.java:19866)
            at android.os.Handler.handleCallback(Handler.java:739)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5257)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
03-25 22:02:31.879 340-697/? W/ActivityManager:   Force finishing activity 1 app.alexdickson.com.workout1/.Main2Activity
我的XML如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout     xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:weightSum="2"
android:orientation="horizontal"
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" >

<ImageButton
    android:layout_width="0dp"
    android:layout_height="400dp"
    android:layout_weight="1"
    android:id="@+id/botoAbdominals"
    android:background="@drawable/abdominals"
    android:contentDescription="ImatgeAbdominals"
    android:layout_marginTop="50dp"
    android:layout_marginRight="10dp"
    android:layout_marginLeft="10dp"
    android:onClick="showTimePickerDialog" />


<ImageButton
    android:layout_width="0dp"
    android:layout_height="400dp"
    android:layout_weight="1"
    android:id="@+id/botoFlexio"
    android:layout_gravity="top"
    android:layout_marginTop="50dp"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    android:background="@drawable/flexio"
    android:contentDescription="ImatgeFlexio"
    android:onClick="showTimePickerDialog"/>

</LinearLayout>

似乎您在xml中定义了一个
android:onClick=“showTimePickerDialog”
方法,当您为id为
的ImageButton单击该方法时,将调用该方法


检查您的xml。您的活动中没有此类方法。

在xml中,您声明,单击按钮时调用的方法:

android:onClick="showTimePickerDialog"
但是在java代码中没有这样的方法。事实上,错误在于:

java.lang.IllegalStateException: Could not find method showTimePickerDialog(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.support.v7.widget.AppCompatImageButton with id 'botoAbdominals'
但是您有一个onClick(视图v)。 在您的xml上尝试:

android:onClick="onClick"

您也可以发布相关的XML布局文件吗?请记住以后的问题:不要使用像“为什么这不起作用”这样的通用标题。想象一下每个人都会这么做谢谢Mattias!作品完美现在:D