【问题标题】:Error with onclick method in a fragment片段中的 onclick 方法出错
【发布时间】:2016-01-18 21:22:00
【问题描述】:

我使用带有 viewpager 的 tablayout,我在其中调用了三个片段。 我对这 3 个片段之一有错误,这一个:equasec_calc.xml 的一部分:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="fr.djey.maths.EquasecCalc">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_centerInParent="true"
        android:gravity="center">

        <EditText
            android:text=""
            android:inputType="numberSigned|numberDecimal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/valuea"
            />

        <EditText
            android:text=""
            android:inputType="numberSigned|numberDecimal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/valueb"/>

        <EditText
            android:text=""
            android:inputType="numberSigned|numberDecimal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/valuec"/>

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="apply"
            android:onClick="apply"/>

    </LinearLayout>

</RelativeLayout>

及其java的一部分:EquasecCalc.java

public void apply(View v) {  
    variablea = Double.parseDouble(valuea.getText().toString());
    variableb = Double.parseDouble(valueb.getText().toString());
    variablec = Double.parseDouble(valuec.getText().toString());
    Equasec Equasec = new Equasec();
    List<Double> result = Equasec.equasecCalc(variablea, variableb, variablec);

    size = result.size();
    if(size==1) {
        x = result.get(0);
    }
    else if(size==2) {
        x = result.get(0);
        y = result.get(1);
    }

    flag = 1;

    EquasecResult.Result();
}

Logcat:

01-18 21:43:46.531 15462-15462/fr.djey.maths E/AndroidRuntime: FATAL EXCEPTION: main
      Process: fr.djey.maths, PID: 15462
      java.lang.IllegalStateException: Could not find method apply(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.support.v7.widget.AppCompatButton
          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:5198)
          at android.view.View$PerformClick.run(View.java:21147)
          at android.os.Handler.handleCallback(Handler.java:739)
          at android.os.Handler.dispatchMessage(Handler.java:95)
          at android.os.Looper.loop(Looper.java:148)
          at android.app.ActivityThread.main(ActivityThread.java:5417)
          at java.lang.reflect.Method.invoke(Native Method)
          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
01-18 21:43:52.049 15462-15468/fr.djey.maths W/art: Suspending all threads took: 16.749ms

正如您在标题中看到的那样,我在单击具有 onclick 属性 apply 的按钮时遇到错误。你能告诉我如何在这样的片段中执行 onclick 操作吗?

如果您认为我的错误可能来自另一个文件,请告诉我,我会放其他文件。

谢谢

【问题讨论】:

  • 错误在标题中:java.lang.IllegalStateException:在视图类 android.support.v7 上定义的 android:onClick 属性的父或祖先上下文中找不到方法 apply(View)。小部件.AppCompatButton

标签: java android android-fragments onclick


【解决方案1】:

android:onClick 适用于 API 级别 4 及更高版本,因此如果您的目标低于此,则无法使用它。

【讨论】:

  • 不,这不是API级别的问题,我使用API​​ 19
  • 它适用于活动,而不是当我使用片段时
  • 为什么不实现 OnClickListener?
  • 因为我不明白 onclick 和 onclicklistener 之间的真正区别。我认为在简单的按钮单击的情况下 onclick 就足够了
  • 可以试试看这个帖子...stackoverflow.com/questions/21192386/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-18
  • 1970-01-01
  • 2020-04-14
  • 1970-01-01
相关资源
最近更新 更多