java.lang.NullPointerException:尝试调用虚方法'void android.widget.Button.setOnClickListener

时间:2016-03-20 06:50:37

标签: android android-fragments chronometer

我是Android的新手,我正在尝试制作秒表但不知道我的代码有什么问题。我收到了这个错误 -

  

java.lang.NullPointerException:尝试在空对象引用上调用虚方法'void android.widget.Button.setOnClickListener(android.view.View $ OnClickListener)'

请帮忙。

StudyTimeFragment.java

package com.studypal.khadija.studypal;

import android.app.Fragment;
import android.os.Bundle;
import android.os.SystemClock;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.Chronometer;

public class StudyTimeFragment extends Fragment {

public Button startbutton;
public Chronometer studywatch;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.fragment_studytime, container, false);

    startbutton=(Button)rootView.findViewById(R.id.button);
    studywatch = (Chronometer)rootView.findViewById(R.id.chronometer);
    startbutton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            // Perform action on click
            studywatch.setBase(SystemClock.elapsedRealtime());
            studywatch.start();
            return;
        }
    });
    return rootView;
 }
}

fragment_studytime.xml

 <?xml version="1.0" encoding="utf-8"?>
 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent" android:layout_height="match_parent">

<Chronometer
    android:layout_width="88dp"
    android:layout_height="91dp"
    android:id="@+id/chronometer"
    android:layout_gravity="top|center"
    android:layout_marginTop="175dp"
    android:width="150dp"
    android:height="150dp"
    android:textSize="70dp" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="300dp"
    android:layout_gravity="top|center"
    android:text="Start"
    android:clickable="true"
    android:onClick=""
    />

 </FrameLayout>

3 个答案:

答案 0 :(得分:1)

您没有在xml文件中为您的按钮指定ID。按如下方式更新xml:

<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="300dp"
    android:layout_gravity="top|center"
    android:text="Start"
    android:clickable="true"
    android:onClick=""

    />

答案 1 :(得分:0)

看起来您的按钮需要一个ID,与您在片段onCreateView中寻找的ID相同。

<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="300dp"
    android:layout_gravity="top|center"
    android:text="Start"
    android:clickable="true"
    android:onClick=""
    />

注意新的android:id属性。

答案 2 :(得分:0)

您尚未将按钮ID分配给按钮xml layout.Change您的按钮标记如下

<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="300dp"
    android:layout_gravity="top|center"
    android:text="Start"
    android:clickable="true"
    android:onClick=""

    />