Androidstudio点击MyActivity界面中的TextView时跳转到一个包含listview的TreeActivity界面TreeActivity界面每行有若干不同的时间比如第一行是每天第二行是每周第三行是每月点击任一行时返回到MyActivity中将选中行的时间显示在TextView中最后app就要根据我所选的时间进行周期性的提醒代码怎么写?
你可以按照以下步骤来实现这个功能:
-
在MyActivity的布局文件中,添加一个TextView,并设置一个点击事件监听器。
-
在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);
}
});
-
在TreeActivity的布局文件中,添加一个ListView,并创建一个数据源,用于存储不同的时间选项。
-
在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();
}
});
- 在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);
}
}
- 最后,根据选中的时间进行周期性的提醒,你可以使用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类,用于接收提醒的广播,并在其中实现相应的逻辑。
这是一个基本的实现方式,你可以根据自己的需求进行调整和完善
原文地址: http://www.cveoy.top/t/topic/iLYB 著作权归作者所有。请勿转载和采集!