简体   繁体   English

按钮在 Android Studio 中只能工作一次

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM