片段

时间:2016-01-18 21:22:00

标签: java android android-fragments onclick

我使用带有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动作吗?

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

由于

1 个答案:

答案 0 :(得分:0)

android:onClick适用于API级别4及以后版本,所以如果你的目标是下面那么你就不能使用它。