java - 我想在片段中添加秒表,但应用程序在单击图像按钮时崩溃。如何解决?
问题描述
我想在底部导航活动的片段中添加秒表。我没有收到任何错误,但应用程序在单击我为开始暂停和重置创建的图像按钮时崩溃。请帮忙!
package com.example.chatapp;
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;
import android.widget.ImageButton;
public class StopwatchFragment extends Fragment {
private boolean running;
private long pauseoffset;
private Chronometer chronometer;
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable
Bundle savedInstanceState ){
View view = inflater.inflate(R.layout.fragment_stopwatch, null);
chronometer = view.findViewById(R.id.cm);
return view;
}
public void startcm (View view){
if (!running){
chronometer.setBase(SystemClock.elapsedRealtime() - pauseoffset);
chronometer.start();
running = true;
}
}
public void pausecm (View view){
if (running){
chronometer.stop();
pauseoffset = SystemClock.elapsedRealtime() - chronometer.getBase();
running = false;
}
}
public void resetcm (View view){
chronometer.setBase(SystemClock.elapsedRealtime());
pauseoffset = 0;
}
}
这是我的那个片段的java代码。Android Studio 在这方面没有显示任何错误。
但是在我的那个片段的 xml 代码中。在onclick前面显示
- 无法解析符号名称“startcm”
- 无法解析符号名称“pausecm”
- 无法解析符号名称“restartcm”
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".StopwatchFragment">
<TextView
android:id="@+id/text_stopwatch"
android:textAlignment="center"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/title_stopwatch"
android:fontFamily="@font/bold"
android:textColor="@color/black"
android:textStyle="bold"
android:textSize="20sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:gravity="center_horizontal" />
<Chronometer
android:id="@+id/cm"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:layout_marginTop="68dp"
android:fontFamily="@font/bold"
android:textSize="60sp"
android:textColor="@color/colorPrimary"
android:textAlignment="center"/>
<ImageButton
android:id="@+id/start"
android:layout_width="50dp"
android:layout_height="50dp"
android:src="@drawable/ic_play_arrow_black_24dp"
android:background="@drawable/circular_button"
android:tint="#fff"
android:layout_marginTop="175dp"
android:layout_marginLeft="50dp"
android:onClick="startcm"/>
<TextView
android:id="@+id/text_start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/start"
android:layout_marginTop="225dp"
android:layout_marginLeft="60dp"
android:textColor="@color/black"
android:fontFamily="@font/regular"
/>
<ImageButton
android:id="@+id/pause"
android:layout_width="50dp"
android:layout_height="50dp"
android:src="@drawable/ic_pause_black_24dp"
android:background="@drawable/circular_button"
android:tint="#fff"
android:layout_marginTop="175dp"
android:layout_marginLeft="150dp"
android:onClick="pausecm"/>
<TextView
android:id="@+id/text_pause"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/pause"
android:layout_marginTop="225dp"
android:layout_marginLeft="157dp"
android:textColor="@color/black"
android:fontFamily="@font/regular"
/>
<ImageButton
android:id="@+id/reset"
android:layout_width="50dp"
android:layout_height="50dp"
android:src="@drawable/restart"
android:background="@drawable/circular_button"
android:tint="#fff"
android:layout_marginTop="175dp"
android:layout_marginLeft="250dp"
android:onClick="resetcm"/>
<TextView
android:id="@+id/text_reset"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/reset"
android:layout_marginTop="225dp"
android:layout_marginLeft="258dp"
android:textColor="@color/black"
android:fontFamily="@font/regular"
/>
</RelativeLayout>
请帮忙!!!
解决方案
xml标签在您的ActivityonClick
中查找您的函数,而不是在您的片段中。大概有3个解决方案:
将这些功能移至您的 Activity
添加
view.findViewById(R.id.cmstart).setOnClickListener()
到您的片段,并删除 xml 标记。您可以在 xml 标记中添加对您的片段的引用,但我不知道该怎么做。