Java 根据TextClock Android中的时间更改TextView

Java 根据TextClock Android中的时间更改TextView,java,android,android-studio,time,Java,Android,Android Studio,Time,当TextClock上的时间等于11:59 PM 我试着做一些类似的事情 if(数字时钟等于(“11:49 PM”)){ tvOne.setText(“文本更改”); } 但是TextView没有改变,所以我尝试在我的TextClock上使用OnFocusChangeListener digitalClock.setOnFocusChangeListener(新视图.OnFocusChangeListener(){ @凌驾 public void onFocusChange(视图v,布尔has

TextClock
上的时间等于
11:59 PM

我试着做一些类似的事情

if(数字时钟等于(“11:49 PM”)){
tvOne.setText(“文本更改”);
}

但是
TextView
没有改变,所以我尝试在我的
TextClock
上使用
OnFocusChangeListener

digitalClock.setOnFocusChangeListener(新视图.OnFocusChangeListener(){
@凌驾
public void onFocusChange(视图v,布尔hasFocus){
系统输出打印LN(数字时钟);
如果(数字时钟等于(“晚上11:59”)){
tvOne.setText(“文本更改”);
}
}
});

但我不确定我是否做对了。

根据文档,TextClock扩展了TextView:

 public class TextClock
extends TextView
java.lang.Object
   ↳    android.view.View
       ↳    android.widget.TextView
           ↳    android.widget.TextClock  
使用
textClock.getText().toString().equals(someString)
从您的textClock获取文本,并与所需的字符串进行比较。
并实现TextChangedListener以监视textClock中的更改:

binding.textClock.addTextChangedListener (new TextWatcher () {
            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

            }

            @Override
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

            }

            @Override
            public void afterTextChanged(Editable editable) {
                if (binding.textClock.getText ().toString().equals ("20:43 PM")){
                    binding.textView3.setText (binding.textClock.getText ().toString());
                }
            }
        });
这应该行得通


绑定是一项功能,要根据文档绑定数据和视图,TextClock扩展了TextView:

 public class TextClock
extends TextView
java.lang.Object
   ↳    android.view.View
       ↳    android.widget.TextView
           ↳    android.widget.TextClock  
使用
textClock.getText().toString().equals(someString)
从您的textClock获取文本,并与所需的字符串进行比较。
并实现TextChangedListener以监视textClock中的更改:

binding.textClock.addTextChangedListener (new TextWatcher () {
            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

            }

            @Override
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

            }

            @Override
            public void afterTextChanged(Editable editable) {
                if (binding.textClock.getText ().toString().equals ("20:43 PM")){
                    binding.textView3.setText (binding.textClock.getText ().toString());
                }
            }
        });
这应该行得通


绑定是一项功能,要绑定数据和视图,请使用报警管理器执行此任务

在onCreate方法中

private AlarmManager alarmMgr;
private PendingIntent alarmIntent;
...
alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, AlarmReceiver.class);
alarmIntent = PendingIntent.getBroadcast(context, 0, intent, 0);

// Set the alarm to start at 23:49 PM
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 49);

// setRepeating() lets you specify a precise custom interval--in this case,
// 1 day

Calendar calendar = Calendar.getInstance();
int day = calendar.get(Calendar.DAY_OF_WEEK);
if (day == 1) {
            //today = "Sunday";
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
            AlarmManager.INTERVAL_DAY, alarmIntent);
            }
创建一个接收方类

public class MyReceiver extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {
                 tvOne.setText("Text changed");

        }
    }
添加权限

<uses-permission android:name="android.permission.WRITE_SETTINGS" ></uses-permission>
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION" ></uses-permission>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" ></uses-permission>

使用报警管理器执行此任务

在onCreate方法中

private AlarmManager alarmMgr;
private PendingIntent alarmIntent;
...
alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, AlarmReceiver.class);
alarmIntent = PendingIntent.getBroadcast(context, 0, intent, 0);

// Set the alarm to start at 23:49 PM
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 49);

// setRepeating() lets you specify a precise custom interval--in this case,
// 1 day

Calendar calendar = Calendar.getInstance();
int day = calendar.get(Calendar.DAY_OF_WEEK);
if (day == 1) {
            //today = "Sunday";
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
            AlarmManager.INTERVAL_DAY, alarmIntent);
            }
创建一个接收方类

public class MyReceiver extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {
                 tvOne.setText("Text changed");

        }
    }
添加权限

<uses-permission android:name="android.permission.WRITE_SETTINGS" ></uses-permission>
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION" ></uses-permission>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" ></uses-permission>


数字时钟的类型是什么?我怀疑它不是一个字符串,如果我是正确的,它永远不可能等于一个字符串。请给我一个。文本时钟数字时钟;数字时钟的类型是什么?我怀疑它不是一个字符串,如果我是正确的,它永远不可能等于一个字符串。请给我一个。文本时钟数字时钟;如果我想选择报警,将报警管理器设置为每个星期天晚上11:59?请参阅更新的回答如果我在fragment
OnViewCreated
中添加了报警,它还会工作吗?什么是
AlarmReceiver.class
是您要我创建的receiver类吗?最后,receiver类只是一个java类,对吗?AlarmReceiver.class是一个广播接收器类,您可以在这里了解更多关于它的信息。如果我想选择报警,在每个星期天晚上11:59设置报警管理器,该怎么办?请参阅更新的回答如果我在fragment
OnViewCreated
中添加它,它还会工作吗?什么是
AlarmReceiver.class
是您要我创建的receiver类吗?最后,receiver类只是一个java类,对吗?AlarmReceiver.class是一个广播接收器类,您可以在这里了解更多