[英]Button works only once in Android Studio
So, i have a button which function is to update my TextView.所以,我有一个按钮,function 用于更新我的 TextView。 Every time someone clicks the button to the current date.
每次有人点击按钮到当前日期。 But, for some reason it only works once.
但是,由于某种原因,它只能工作一次。 I have tried both XML onClick method and Java setOnClickListener, not one works.
我已经尝试过 XML onClick 方法和 Java setOnClickListener,没有一个有效。 Can someone please help me on solving this problem?
有人可以帮我解决这个问题吗?
import androidx.appcompat.app.AppCompatActivity;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;
import org.w3c.dom.Text;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Calendar;
import java.util.Timer;
import java.util.TimerTask;
public class MainActivity extends AppCompatActivity {
Date date = Calendar.getInstance().getTime();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void btnClick(View i){
String time = ((EditText) findViewById(R.id.editTextTime)).getText().toString();
String url = ((EditText) findViewById(R.id.editText)).getText().toString();
TextView txtErr = findViewById(R.id.errorLog);
txtErr.setText(date.toString());
}
}
You are initialising the date only once (when your MainActivity
is instantiated).您只初始化一次日期(当您的
MainActivity
被实例化时)。 Therefore each time you set the text, you're using the same date instance.因此,每次设置文本时,您都使用相同的日期实例。
Instead you should be getting a new date each time the button is clicked, something like:相反,每次单击按钮时,您都应该获得一个新日期,例如:
public void btnClick(View i){
String time = ((EditText) findViewById(R.id.editTextTime)).getText().toString();
String url = ((EditText) findViewById(R.id.editText)).getText().toString();
TextView txtErr = findViewById(R.id.errorLog);
Date date = Calendar.getInstance().getTime();
txtErr.setText(date.toString());
}
As a side note, I wouldn't recommend using the Calendar
APIs anymore.作为旁注,我不建议再使用
Calendar
API。 Instead take a look at the new, more modern, java.time
library which you can take a look at here .相反,请查看新的、更现代的
java.time
库,您可以在此处查看。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.