关于空对象引用

时间:2016-04-11 17:56:57

标签: android android-studio wear-os moto-360

我知道这个问题在这里已经多次回答,但我似乎无法解决我的问题。我正在尝试创建一个读取用户心率并将该信息发送到手机的应用程序。我的问题是我已经实施了WatchViewStub,但每次运行该程序时,它都会给我一个NullPointerException on a null object reference。我真的无法弄清楚为什么这会给我这样的错误。有人可以解释一下我做错了什么吗?提前谢谢。

错误来自第31行:

stub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() {

HeartRateWearActivity.java:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.round_activity_heart_rate);
    final WatchViewStub stub = (WatchViewStub) findViewById(R.id.watch_view_stub);
    stub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() {
        @Override
        public void onLayoutInflated(WatchViewStub stub) {
            timeStampTxt = (TextView) stub.findViewById(R.id.timeStampTxt);
            hrTxt = (TextView) stub.findViewById(R.id.hrTxt);

            measureBtn = (Button) stub.findViewById(R.id.measureBtn);
            measureBtn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    if (!toggle) {
                        startService(new Intent(getApplicationContext(), SensorService.class));
                        toggle = true;
                    } else {
                        stopService(new Intent(getApplicationContext(), SensorService.class));
                        toggle = false;
                    }

                }
            });
        }
    });
    this.registerReceiver(mMessageReceiver, new IntentFilter("com.example.Broadcast"));
}

round_activity_heart_rate.xml:

<?xml version="1.0" encoding="utf-8"?>
<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=".HeartRateWearActivity"
tools:deviceIds="wear_round"
android:id="@+id/r_bg"
android:background="#ED2D50">

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/hrTxt"
    android:textSize="80dp"
    android:text="0"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="34dp" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:text="bpm"
    android:id="@+id/textView2"
    android:textColor="@color/white"
    android:layout_alignBaseline="@+id/hrTxt"
    android:layout_alignBottom="@+id/hrTxt"
    android:layout_toEndOf="@+id/hrTxt" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:text="last update"
    android:id="@+id/textView3"
    android:textSize="10dp"
    android:layout_below="@+id/hrTxt"
    android:layout_centerHorizontal="true"
    android:textColor="@color/white" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:text="7:15"
    android:id="@+id/timeStampTxt"
    android:textSize="12dp"
    android:layout_below="@+id/textView3"
    android:layout_centerHorizontal="true"
    android:textColor="@color/white" />

<Switch
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/measureBtn"
    android:layout_below="@+id/timeStampTxt"
    android:layout_centerHorizontal="true"
    android:checked="false" />
</RelativeLayout>

Logcat错误:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.user.health/com.example.user.health.HeartRateWearActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.wearable.view.WatchViewStub.setOnLayoutInflatedListener(android.support.wearable.view.WatchViewStub$OnLayoutInflatedListener)' on a null object reference

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.wearable.view.WatchViewStub.setOnLayoutInflatedListener(android.support.wearable.view.WatchViewStub$OnLayoutInflatedListener)' on a null object reference
at com.example.user.health.HeartRateWearActivity.onCreate(HeartRateWearActivity.java:31)

0 个答案:

没有答案