【问题标题】:onClick method in AndroidAndroid中的onClick方法
【发布时间】:2017-02-21 16:46:35
【问题描述】:

从不使用方法 (calculate.view.View)

android 崩溃错误:

--------- 崩溃开始 E/AndroidRuntime: 致命异常: main 进程:...,PID:2537 java.lang.IllegalStateException:在父或祖先上下文中找不到方法calculate (MainActivity)(View) for android:onClick 属性定义在视图类android.support.v7.widget.AppCompatButton 与id 'button' 在 android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.resolveMethod(AppCompatViewInflater.java:325) 在 android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:284) 在 android.view.View.performClick(View.java:5198) 在 android.view.View$PerformClick.run(View.java:21147) 在 android.os.Handler.handleCallback(Handler.java:739) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:5417) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 应用程序终止。

是什么导致了这个崩溃错误?

** AndroidManifest:**

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="...">


    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".CalculatorActivity$CalculatorActivity" />
        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />
    </application>

** 计算器活动:**

package ...;


import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class CalculatorActivity extends Fragment {

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.calculator_main, container, false);
    }

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        getActivity().setTitle("CrCal");
    }




    }

【问题讨论】:

  • 嗯,不是无赖,但是JAVA CODE呢???!
  • 发布 MainActivity Java 代码和 XML

标签: android android-studio


【解决方案1】:

在 android:onClick 的父上下文或祖先上下文中找不到方法计算 (MainActivity)(View)

此错误意味着您的活动不包含您在按钮布局中定义的方法。所以我假设当你点击那个按钮时你的应用程序崩溃了。检查您的布局,确保您在 android:onClick="calculate" 中定义的方法确实存在于 MainActivity 中。

【讨论】:

  • public void calculate(View view) { sum = Integer.parseInt(sumEditText.getText().toString());月 = Integer.parseInt(monthEditText.getText().toString());双倍总计 = Double.valueOf(sum * percent / (100 * months)); calculateTextView.setText(total.toString()); } MainActivity 上的这个方法
  • 好的,感谢您发布更多代码。所以我假设你的按钮在 R.layout.calculator_main 中。如果是这种情况,那么您的 calculate(View view) 方法应该在 CalculatorActvity 而不是 MainActivity 中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-07
  • 2013-03-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多