2016-03-20 6 views
0

Я новичок в android, и я пытаюсь сделать секундомер, но не знаю, что не так с моим кодом. Я получаю это error-java.lang.NullPointerException: попытка вызвать виртуальный метод void android.widget.Button.setOnClickListener

java.lang.NullPointerException: Попытка вызвать виртуальный метод 'недействительным 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> 
+0

@ParsaniaHardik Вам не нужно комментировать, чтобы сказать OP, чтобы посмотреть на ваш ответ. –

ответ

0

Похоже, ваша кнопка нужна ID, тот же, что вы ищете в вашем фрагменте onCreateView.

<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.

+0

работал !! спасибо .. еще один вопрос .. как мне получить хронометр, чтобы показать секунды? – PersianBlue

+0

Это звучит как другой вопрос, который вы также можете задать в Stack Overflow. –

1

Вы не дали удостоверение личности к кнопке в XML-файле. Обновление 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="" 

    /> 
0

Вы не назначили идентификатор кнопки для вашей кнопки 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="" 

    /> 
Смежные вопросы