你可以按照以下步骤来实现这个功能:

  1. 在 MyActivity 的布局文件中,添加一个 TextView,并设置一个点击事件监听器。

  2. 在 TextView 的点击事件监听器中,创建一个 Intent 对象,用于启动 TreeActivity 界面。

textView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent intent = new Intent(MyActivity.this, TreeActivity.class);
        startActivityForResult(intent, 1);
    }
});
  1. 在 TreeActivity 的布局文件中,添加一个 ListView,并创建一个数据源,用于存储不同的时间选项。

  2. 在 TreeActivity 的代码中,为 ListView 设置一个适配器,并设置点击事件监听器。

String[] timeOptions = {'每天', '每周', '每月'};
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, timeOptions);
listView.setAdapter(adapter);

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        String selectedTime = timeOptions[position];
        Intent resultIntent = new Intent();
        resultIntent.putExtra('selectedTime', selectedTime);
        setResult(Activity.RESULT_OK, resultIntent);
        finish();
    }
});
  1. 在 MyActivity 中,重写 onActivityResult 方法,获取从 TreeActivity 返回的数据,并将选中的时间显示在 TextView 中。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == 1 && resultCode == Activity.RESULT_OK) {
        String selectedTime = data.getStringExtra('selectedTime');
        textView.setText(selectedTime);
    }
}
  1. 最后,根据选中的时间进行周期性的提醒,你可以使用 AlarmManager 类来实现。
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent alarmIntent = new Intent(this, AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, alarmIntent, 0);

// 根据选中的时间设置提醒的周期
if (selectedTime.equals('每天')) {
    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
} else if (selectedTime.equals('每周')) {
    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), AlarmManager.INTERVAL_DAY * 7, pendingIntent);
} else if (selectedTime.equals('每月')) {
    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), AlarmManager.INTERVAL_DAY * 30, pendingIntent);
}

注意,你还需要创建一个 AlarmReceiver 类,用于接收提醒的广播,并在其中实现相应的逻辑。

这是一个基本的实现方式,你可以根据自己的需求进行调整和完善。

Android Studio: 使用 ListView 实现时间选择,并设置周期性提醒

原文地址: https://www.cveoy.top/t/topic/qscu 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录