Я хотел добавить секундомер во фрагмент с активностью нижней навигации, но findviewbyid показывает ошибку. Как решить?
Я хотел добавить секундомер во фрагмент с активностью нижней навигации, но findviewbyid показывает ошибку. Я пробовал View.... и getView(), но ничего не работает. Подскажите пожалуйста какое решение проблемы.
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import android.os.SystemClock;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Chronometer;
public class StopwatchFragment extends Fragment {
private StopwatchFragment(){
}
private Chronometer chronometer;
private boolean running;
private long pauseOffset;
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable
Bundle savedInstanceState ){
return inflater.inflate(R.layout.fragment_stopwatch, null);
}
chronometer = **findViewById**(R.id.cm);
public void startChronometer(View view){
if (!running){
chronometer.setBase(SystemClock.elapsedRealtime() - pauseOffset);
chronometer.start();
running = true;
}
}
public void pauseChronometer(View view){
if (running){
chronometer.stop();
pauseOffset = SystemClock.elapsedRealtime() - chronometer.getBase();
running = false;
}
}
public void resetChronometer(View view){
chronometer.setBase(SystemClock.elapsedRealtime());
pauseOffset = 0;
}
}
Это мой код Java, где findViewById показывает недопустимое объявление метода, отсутствует тело метода и т. Д. Пожалуйста, помогите!
2 ответа
Внутри OnCreateView добавьте View view = inflater.inflate(R.layout.fragment_stopwatch, null); хронометр = view.findViewById**(R.id.cm)
findViewById
должен быть объявлен внутри метода. В вашем случае он вне заявленного.
Объявление этой строки в начале startChronometer
должно сработать:
public void startChronometer(View view)
{
chronometer = **findViewById**(R.id.cm);
if (!running){
chronometer.setBase(SystemClock.elapsedRealtime() - pauseOffset);
chronometer.start();
running = true;
}
}