我需要从 * 开始画一条线以适应屏幕的整个宽度
主页
/
user-429772
Andrew's questions
我创建了一个应用程序,用户可以在其中创建自己的花集合并为每个花设置浇水通知。将花朵添加到您的收藏时,花朵的名称和信息取自 Firestore。问题是,在为工作管理器创建作品时,我传递了所需的数据,但一旦我关闭应用程序,它就会丢失所有数据并将花名设为 null。我还有一个问题,如何为每朵花创建具有不同 ID 的作品(通知)。例如:牡丹3天,唐菖蒲2天,这样我就可以按ID删除工作
谢谢
private void addPreferPlant(){
final Map<String, Object> myPlant = new HashMap<>();
myPlant.put("name", namePlant);
myPlant.put("image", imagePlant);
myPlant.put("sun",plantSun);
myPlant.put("moreWater",plantWater);
myPlant.put("sunInfo",sunInfo);
myPlant.put("waterInfo",waterInfo);
myPlant.put("info",infoPlant);
myPlant.put("terraInfo",terraInfo);
myPlant.put("temp",plantTemp);
//myPlant.put("idTimer", tagNotification);
// Add a new document with a generated ID
mFS.collection("users").document(userId).collection("MyFlowers")
.add(myPlant)
.addOnSuccessListener(new OnSuccessListener<DocumentReference>() {
@Override
public void onSuccess(DocumentReference documentReference) {
myPlantID = documentReference.getId();
Log.d("id", myPlantID);
Toast.makeText(SetPlant.this,"OK",Toast.LENGTH_SHORT).show();
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(SetPlant.this,"Fail",Toast.LENGTH_SHORT).show();
}
});
oneTimeRequest();
// WorkerUpload.periodRequest();
}
public static void oneTimeRequest(){
Data data = new Data.Builder()
.putString("EXTRA_TITLE", "Flovers")
.putString("EXTRA_TEXT", namePlant)
.build();
OneTimeWorkRequest oneTimeWorkRequest = new OneTimeWorkRequest.Builder(WorkerUpload.class)
.setInputData(data)
.setInitialDelay(20, TimeUnit.SECONDS)
.setConstraints(setCons())
.addTag(namePlant)
.build();
WorkManager.getInstance().enqueue(oneTimeWorkRequest);
Log.d("YEK", "Repeat");
}
public static Constraints setCons() {
Constraints constraints = new Constraints.Builder().build();
return constraints;
}
public class WorkerUpload extends Worker {
public WorkerUpload(@NonNull Context context, @NonNull WorkerParameters workerParams) {
super(context, workerParams);
}
private static final String CHANNEL_ID = "SAMPLE_CHANNEL";
@NonNull
@Override
public Result doWork() {
SetPlant.oneTimeRequest();
String title = getInputData().getString("EXTRA_TITLE");
String text = getInputData().getString("EXTRA_TEXT");
showNotif(title,text);
Log.d("YEK", "Repeat OK");
return Result.success();
}
public void showNotif(String text, String message){
Random rand = new Random();
int notificationId = rand.nextInt(20);
//Call MainActivity when notification is tapped
Intent mainIntent = new Intent(getApplicationContext(), MainActivity.class);
PendingIntent contentIntent = PendingIntent.getActivity(
getApplicationContext(),0,mainIntent,PendingIntent.FLAG_UPDATE_CURRENT
);
//NotificationManager
NotificationManager notificationManager =
(NotificationManager) getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
//For API 26 and above.
CharSequence channel_name = "My Notification";
int importance = NotificationManager.IMPORTANCE_DEFAULT;
NotificationChannel channel = new NotificationChannel(CHANNEL_ID, channel_name,importance);
notificationManager.createNotificationChannel(channel);
}
// prepare notification
NotificationCompat.Builder builder = new NotificationCompat.Builder(getApplicationContext(), CHANNEL_ID)
.setSmallIcon(R.drawable.plant_ic)
.setContentTitle(text)
.setContentText("Полей " + message)
.setContentIntent(contentIntent)
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.setAutoCancel(true);
notificationManager.notify(notificationId,builder.build());
}
}