package com.weishitechsub.mfhfllcx.fragment.remind;
import static android.app.Activity.RESULT_OK;
import static android.content.Context.MODE_PRIVATE;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Build;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat;
import com.hfd.common.base.BaseFragment;
import com.weishitechsub.mfhfllcx.R;
import com.weishitechsub.mfhfllcx.utils.AlarmReceiver;
import com.weishitechsub.mfhfllcx.utils.OnMultiClickListener;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class RemindFragment extends BaseFragment {
private static final int REQUEST_CODE = 1;
TextView tv_operators, tv_date, tv_remind_date, tv_num, tv_phone, tv_ka1, tv_ka2;
ImageView iv_jia, iv_jian;
RelativeLayout relative, relative01;
private static final String PREF_NAME = "MyPrefs";
private static final String KEY_INPUT_TEXT = "inputText";
private static final String KEY_DATA1 = "data1";
private static final String KEY_TIPS_DATE = "tipsDate";
private static final String KEY_OPERATORS = "operators";
// 用于记录当前选中的按钮
private String selectedButton = "button1";
// 数据模型类
class CardData {
String inputText;
String data1;
String tipsDate;
String operators;
}
// 在 RemindFragment 类中添加成员变量
private CardData card1Data = new CardData();
private CardData card2Data = new CardData();
@Override
protected int setLayout() {
return R.layout.remind_fragment;
}
@Override
protected void initView() {
tv_operators = fvbi(R.id.tv_operators);
tv_date = fvbi(R.id.tv_date);
tv_remind_date = fvbi(R.id.tv_remind_date);
tv_num = fvbi(R.id.tv_num);
tv_phone = fvbi(R.id.tv_phone);
iv_jia = fvbi(R.id.iv_jia);
iv_jian = fvbi(R.id.iv_jian);
tv_ka1 = fvbi(R.id.tv_ka1);
tv_ka2 = fvbi(R.id.tv_ka2);
relative = fvbi(R.id.relative);
relative01 = fvbi(R.id.relative01);
// 设置按钮标记
tv_ka1.setTag("button1");
tv_ka2.setTag("button2");
}
@Override
protected void initClick() {
iv_jia.setOnClickListener(new OnMultiClickListener() {
@Override
public void onMultiClick(View v) {
Intent intent = new Intent(getActivity(), AddActivity.class);
// 将选中的按钮信息传递给下个页面
intent.putExtra("selectedButton", selectedButton);
startActivityForResult(intent, REQUEST_CODE);
}
});
tv_ka1.setOnClickListener(new OnMultiClickListener() {
@Override
public void onMultiClick(View v) {
String buttonId = (String) v.getTag();
handleAddButtonClick(buttonId);
selectedButton = buttonId;
}
});
tv_ka2.setOnClickListener(new OnMultiClickListener() {
@Override
public void onMultiClick(View v) {
String buttonId = (String) v.getTag();
handleAddButtonClick(buttonId);
selectedButton = buttonId;
}
});
}
@Override
protected void initData() throws ParseException {
// 从SharedPreferences加载数据
loadDataFromPreferences();
if ("button1".equals(selectedButton)) {
showData(card1Data);
} else if ("button2".equals(selectedButton)) {
showData(card2Data);
}
String tipsDate = card1Data.tipsDate;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
Date date = sdf.parse(tipsDate);
long targetTimeInMillis = date.getTime();
// 获取 AlarmManager 实例
AlarmManager alarmManager = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE);
// 创建一个 PendingIntent,用于在闹钟触发时启动广播接收器
Intent intent = new Intent(getContext(), AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
// 设置闹钟
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, targetTimeInMillis, pendingIntent);
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
alarmManager.setExact(AlarmManager.RTC_WAKEUP, targetTimeInMillis, pendingIntent);
} else {
alarmManager.set(AlarmManager.RTC_WAKEUP, targetTimeInMillis, pendingIntent);
}
}
private void handleAddButtonClick(String buttonId) {
if ("button1".equals(buttonId)) {
// 处理按钮1的添加逻辑
relative.setBackgroundResource(R.mipmap.img_ka1_bg);
tv_ka1.setTextColor(ContextCompat.getColor(getContext(), R.color.anythink_022E6F));
tv_ka2.setTextColor(ContextCompat.getColor(getContext(), R.color.white));
showData(card1Data);
} else if ("button2".equals(buttonId)) {
// 处理按钮2的添加逻辑
relative.setBackgroundResource(R.mipmap.img_ka2_bg);
tv_ka2.setTextColor(ContextCompat.getColor(getContext(), R.color.anythink_022E6F));
tv_ka1.setTextColor(ContextCompat.getColor(getContext(), R.color.white));
showData(card2Data);
}
}
private void showData(CardData data) {
// 显示数据到对应的TextView
if (data != null) {
tv_operators.setText(data.operators != null ? data.operators : "暂无数据");
tv_date.setText(data.data1 != null ? data.data1 : "暂无数据");
tv_remind_date.setText(data.tipsDate != null ? data.tipsDate : "暂无数据");
tv_phone.setText(data.inputText != null ? data.inputText : "暂无数据");
}
}
private void loadDataFromPreferences() {
SharedPreferences prefs = getActivity().getSharedPreferences(PREF_NAME, MODE_PRIVATE);
// 加载按钮1的数据
card1Data.inputText = prefs.getString(KEY_INPUT_TEXT + "_1", null);
card1Data.data1 = prefs.getString(KEY_DATA1 + "_1", null);
card1Data.tipsDate = prefs.getString(KEY_TIPS_DATE + "_1", null);
card1Data.operators = prefs.getString(KEY_OPERATORS + "_1", null);
// 加载按钮2的数据
card2Data.inputText = prefs.getString(KEY_INPUT_TEXT + "_2", null);
card2Data.data1 = prefs.getString(KEY_DATA1 + "_2", null);
card2Data.tipsDate = prefs.getString(KEY_TIPS_DATE + "_2", null);
card2Data.operators = prefs.getString(KEY_OPERATORS + "_2", null);
relative01.setVisibility(View.VISIBLE);
}
private void saveDataToPreferences(CardData data, String suffix) {
SharedPreferences prefs = getActivity().getSharedPreferences(PREF_NAME, MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
if (data != null) {
editor.putString(KEY_INPUT_TEXT + suffix, data.inputText);
editor.putString(KEY_DATA1 + suffix, data.data1);
editor.putString(KEY_TIPS_DATE + suffix, data.tipsDate);
editor.putString(KEY_OPERATORS + suffix, data.operators);
editor.apply();
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK && data != null) {
// 获取返回的信息
String inputText = data.getStringExtra("trim");
String data1 = data.getStringExtra("data");
String tipsDate = data.getStringExtra("tips_date");
String operators = data.getStringExtra("operators");
String selectedButtonFromResult = data.getStringExtra("selectedButton");
// 根据返回的selectedButton更新对应的数据
if ("button1".equals(selectedButtonFromResult)) {
relative01.setVisibility(View.VISIBLE);
card1Data.inputText = inputText;
card1Data.data1 = data1;
card1Data.tipsDate = tipsDate;
card1Data.operators = operators;
saveDataToPreferences(card1Data, "_1");
showData(card1Data);
} else if ("button2".equals(selectedButtonFromResult)) {
relative01.setVisibility(View.VISIBLE);
card2Data.inputText = inputText;
card2Data.data1 = data1;
card2Data.tipsDate = tipsDate;
card2Data.operators = operators;
saveDataToPreferences(card2Data, "_2");
showData(card2Data);
}
}
}
}
package com.weishitechsub.mfhfllcx.utils;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import androidx.core.app.NotificationCompat;
import androidx.core.app.NotificationManagerCompat;
public class AlarmReceiver extends BroadcastReceiver {
private static final String CHANNEL_ID = "channel_id";
private static final int NOTIFICATION_ID = 1;
@Override
public void onReceive(Context context, Intent intent) {
// 显示通知
showNotification(context);
}
private void showNotification(Context context) {
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context);
// 创建 NotificationChannel(适用于 Android 8.0 及以上)
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
android.app.NotificationChannel channel = new android.app.NotificationChannel(CHANNEL_ID, "Channel Name", android.app.NotificationManager.IMPORTANCE_DEFAULT);
notificationManager.createNotificationChannel(channel);
}
// 创建 Notification.Builder 实例
NotificationCompat.Builder builder = new NotificationCompat.Builder(context, CHANNEL_ID)
.setSmallIcon(android.R.drawable.ic_dialog_info)
.setContentTitle("提醒")
.setContentText("您设定的日期已到!")
.setPriority(NotificationCompat.PRIORITY_DEFAULT);
// 显示通知
notificationManager.notify(NOTIFICATION_ID, builder.build());
}
}
如上代码,这个提醒怎么测试
最新发布