Java 致命异常Android wear心率应用程序

Java 致命异常Android wear心率应用程序,java,android,wear-os,android-sensors,heartbeat,Java,Android,Wear Os,Android Sensors,Heartbeat,我正在尝试在Android wear上制作一个心率监测应用程序,当我尝试在我的设备(LG G watch R)上运行该应用程序时,我已经成功了 “很遗憾,应用程序已停止” 在Android studio上,我看到以下错误: package com.example.ryuu.appka; import android.app.Activity; import android.os.Bundle; import android.support.wearable.view.WatchViewStub

我正在尝试在Android wear上制作一个心率监测应用程序,当我尝试在我的设备(LG G watch R)上运行该应用程序时,我已经成功了

“很遗憾,应用程序已停止”

在Android studio上,我看到以下错误:

package com.example.ryuu.appka;

import android.app.Activity;
import android.os.Bundle;
import android.support.wearable.view.WatchViewStub;
import android.widget.TextView;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.util.Log;
import android.view.WindowManager;

import java.text.SimpleDateFormat;
import java.util.Calendar;

public class activity_wear extends Activity implements SensorEventListener {

private TextView mTextView;
private static final String TAG = "MainActivity";
private TextView mTextViewStepCount;
private TextView mTextViewStepDetect;
private TextView mTextViewHeart;


@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_activity_wear);

    final WatchViewStub stub = (WatchViewStub) findViewById(R.id.watch_view_stub);
    stub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() {

        @Override
        public void onLayoutInflated(WatchViewStub stub) {
            mTextView = (TextView) stub.findViewById(R.id.text);
            mTextViewStepCount = (TextView) stub.findViewById(R.id.step_count);
            mTextViewStepDetect = (TextView) stub.findViewById(R.id.step_detect);
            mTextViewHeart = (TextView) stub.findViewById(R.id.heart);
            getStepCount();
        }
    });
}

private void getStepCount() {
    SensorManager mSensorManager = ((SensorManager)getSystemService(SENSOR_SERVICE));
    Sensor mHeartRateSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE);
    Sensor mStepCountSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);
    Sensor mStepDetectSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_DETECTOR);

    mSensorManager.registerListener(this, mHeartRateSensor, SensorManager.SENSOR_DELAY_NORMAL);
    mSensorManager.registerListener(this, mStepCountSensor, SensorManager.SENSOR_DELAY_NORMAL);
    mSensorManager.registerListener(this, mStepDetectSensor, SensorManager.SENSOR_DELAY_NORMAL);
}

private String currentTimeStr() {
    Calendar c = Calendar.getInstance();
    SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss");
    return df.format(c.getTime());
}

@Override
public void onSensorChanged(SensorEvent event) {
    if (event.sensor.getType() == Sensor.TYPE_HEART_RATE) {
        String msg = "" + (int)event.values[0];
        mTextViewHeart.setText(msg);
        Log.d(TAG, msg);
    }
    else if (event.sensor.getType() == Sensor.TYPE_STEP_COUNTER) {
        String msg = "Count: " + (int)event.values[0];
        mTextViewStepCount.setText(msg);
        Log.d(TAG, msg);
    }
    else if (event.sensor.getType() == Sensor.TYPE_STEP_DETECTOR) {
        String msg = "Detected at " + currentTimeStr();
        mTextViewStepDetect.setText(msg);
        Log.d(TAG, msg);
    }
    else
        Log.d(TAG, "Unknown sensor type");
}


@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
    Log.d(TAG, "onAccuracyChanged - accuracy: " + accuracy);
}

}


整个源代码都打开了

您的
mTextViewHeart
似乎是
null
。显然,在调用
onSensorChanged()
方法时,
mTextViewHeart
尚未初始化

您可以在尝试对其调用方法之前检查它是否为
null


也请阅读以帮助您更好地理解问题。

欢迎使用堆栈溢出的可能重复内容。我已经用你的答案解决了英语问题。我感到羞耻,但老实说,我不知道为什么我在这里/