Java 在Android Studio中编辑文本和倒计时
我的应用程序上有一个Counttimer和edittext。我想在edittext中写一个数字,当我点击按钮时,倒计时开始,时间是edittext变量。在XML中,我有一个示例编号,因为当我删除它时,它就不起作用了。当我启动倒计时时,它会工作,但如果我更改edittext,它会使用旧的edittext数据。我怎样才能解决我的问题 pomodoro.XMLJava 在Android Studio中编辑文本和倒计时,java,android,android-studio,android-edittext,Java,Android,Android Studio,Android Edittext,我的应用程序上有一个Counttimer和edittext。我想在edittext中写一个数字,当我点击按钮时,倒计时开始,时间是edittext变量。在XML中,我有一个示例编号,因为当我删除它时,它就不起作用了。当我启动倒计时时,它会工作,但如果我更改edittext,它会使用旧的edittext数据。我怎样才能解决我的问题 pomodoro.XML <RelativeLayout xmlns:android="http://schemas.android.com/apk/r
<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=".pomodoro"
android:background="@drawable/backround_home">
<
<EditText
android:id="@+id/edittextcalisma"
android:layout_width="80dp"
android:layout_height="40dp"
android:text="20"
android:textAlignment="center"
android:textColor="#000000"
android:textSize="25dp"
android:background="@drawable/edittext"
android:layout_marginLeft="30dp"
android:visibility="visible"
android:inputType="number"
android:maxLength="2"
android:lines="1"
/>
<EditText
android:id="@+id/edittextmola"
android:layout_width="80dp"
android:layout_height="40dp"
android:text="5"
android:textAlignment="center"
android:textColor="#000000"
android:textSize="25dp"
android:background="@drawable/edittext"
android:visibility="visible"
android:layout_marginLeft="30dp"
android:inputType="number"
android:maxLength="2"
android:lines="1"
/>
<Button
android:id="@+id/baslatbutton"
android:layout_width="150dp"
android:layout_height="50dp"
android:text="Başla"
android:textSize="25dp"
android:layout_marginTop="400dp"
android:textColor="#ffffff"
android:fontFamily="@font/montserrat_regular"
android:background="@drawable/button"
android:layout_centerHorizontal="true"
android:visibility="visible"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="40dp"
android:layout_centerInParent="true"
android:fontFamily="@font/montserrat_regular"
android:textColor="#000000"
android:id="@+id/pomodoro"
android:visibility="invisible"
/>
</RelativeLayout>
<
Java.class
public class pomodoro extends AppCompatActivity {
Button baslat;
EditText edittextcalisma,edittextmola;
TextView textcalisma,textmola,pomodoro;
CountDownTimer calisma,mola;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pomodoro);
baslat = findViewById(R.id.baslatbutton);
edittextcalisma = findViewById(R.id.edittextcalisma);
edittextmola = findViewById(R.id.edittextmola);
textcalisma = findViewById(R.id.textcalisma);
textmola = findViewById(R.id.textmola);
String timercalisma = edittextcalisma.getText().toString();
String timermola = edittextmola.getText().toString();
long calismapo = Long.parseLong(timercalisma) * 60000;
long molapo = Long.parseLong(timermola) * 60000;
pomodoro = findViewById(R.id.pomodoro);
baslat.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
pomodoro.setVisibility(View.VISIBLE);
calisma.start();
}
});
calisma = new CountDownTimer(calismapo, 1000) {
@Override
public void onTick(long millis) {
int minuted1 = (int) (millis / 1000) / 60;
int secondd1 = (int) (millis / 1000) % 60;
pomodoro.setText(minuted1 + ":" + secondd1);
if (secondd1 < 10) {
pomodoro.setText(minuted1 + ":0" + secondd1);
}
}
@Override
public void onFinish() {
calisma.cancel();
mola.start();
}
};
mola = new CountDownTimer(molapo, 1000) {
@Override
public void onTick(long molapo) {
int minuted1 = (int) (molapo / 1000) / 60;
int secondd1 = (int) (molapo / 1000) % 60;
pomodoro.setText(minuted1 + ":" + secondd1);
if (secondd1 < 10) {
pomodoro.setText(minuted1 + ":0" + secondd1);
}
}
@Override
public void onFinish() {
mola.cancel();
pomodoro.setText("Bitti");
}
};
}
}
public类pomodoro扩展了appcompative活动{
按钮按钮;
EditText edittextcalisma,edittextmola;
TextView textcalisma、textmola、pomodoro;
倒数计时卡里斯马,莫拉;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pomodoro);
baslat=findViewById(R.id.baslatbutton);
edittextcalisma=findViewById(R.id.edittextcalisma);
edittextmola=findViewById(R.id.edittextmola);
textcalisma=findViewById(R.id.textcalisma);
textmola=findviewbyd(R.id.textmola);
字符串timercalisma=edittextcalisma.getText().toString();
字符串timermola=edittextmola.getText().toString();
长calismapo=long.parseLong(timercalisma)*60000;
长翻车鱼=long.parseLong(timermola)*60000;
pomodoro=findviewbyd(R.id.pomodoro);
setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
pomodoro.setVisibility(视图可见);
calisma.start();
}
});
calisma=新的倒计时(calismapo,1000){
@凌驾
公共无效条(长毫秒){
int minuted1=(int)(毫秒/1000)/60;
int second1=(int)(毫秒/1000)%60;
pomodoro.setText(分钟1+“:”+second1);
如果(第二个d1<10){
pomodoro.setText(分钟1+“:0”+秒1);
}
}
@凌驾
公共无效onFinish(){
calisma.cancel();
mola.start();
}
};
mola=新的倒计时器(molapo,1000){
@凌驾
公共空地(长翻车鱼){
国际会议记录1=(国际)(molapo/1000)/60;
int second1=(int)(molapo/1000)%60;
pomodoro.setText(分钟1+“:”+second1);
如果(第二个d1<10){
pomodoro.setText(分钟1+“:0”+秒1);
}
}
@凌驾
公共无效onFinish(){
mola.cancel();
pomodoro.setText(“Bitti”);
}
};
}
}
时间是文本变量。在XML中,我有一个例子
数字,因为当我删除它时,它就不起作用了
因为在onCreate中读取EditText字段,并且代码需要一个数字,所以需要在XML中设置“示例”数字
从XML中删除数字时,您需要:
检查空值
String timercalisma = edittextcalisma.getText().toString();
String timermola = edittextmola.getText().toString();
if(timercalisma == null || timercalisma.isEmpty()) {
timercalisma = "0";
}
if(timermola == null || timermola.isEmpty()) {
timermola = "0";
}
long calismapo = Long.parseLong(timercalisma) * 60000;
long molapo = Long.parseLong(timermola) * 60000;
或按按钮读取字段
baslat.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String timercalisma = edittextcalisma.getText().toString();
String timermola = edittextmola.getText().toString();
long calismapo = Long.parseLong(timercalisma) * 60000;
long molapo = Long.parseLong(timermola) * 60000;
pomodoro.setVisibility(View.VISIBLE);
calisma.start();
}
});
请正确阐述。你能等一下吗?好的,你现在能看吗?我不明白你想说什么。可能会晚些,但谢谢你。如何添加暂停,按下按钮上的完成倒计时计时器@BlundellI添加2个完成和暂停按钮@Blundel完成时,使用
calisma.cancel()
,暂停时,使用onTick
中的时间,执行cancel
和start
(从上次保存在onTick中的时间开始)。calisma.cancel(),无法工作。当ıcancel calisma时,我的应用程序关闭了。请看@布伦德尔