EditText 在 BroadcastReceiver Android

发布时间: 2016/9/26 3:55:05
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我试图创建自定义的通知。我有两个 EditText 属性在我 XML 文件。我无法理解如何传递的值 EditText 从 ReminderFragment.java 到 AlertReceiver.java 或者不如说,可我宣布 EditText 在 AlertReceiver 本身吗?

ReminderFragment.java

声明 》

eText = (EditText) findViewById(R.id.edittext);
findViewById(R.id.btnSetReminder).setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            String str = eText.getText().toString(); 
            //how to return the string to createNotification method in AlertReceiver.java

            setAlarm();
        }
});

方法时调用 Button 单击设定提醒

public void setAlarm() {
    calcal = new GregorianCalendar();
    calcal.set(pYear, pMonth, pDay, pHour, pMinute); 
    Intent alertIntent = new Intent(ReminderFragment.this, AlertReceiver.class);

    AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    alarmManager.set(AlarmManager.RTC_WAKEUP, calcal.getTimeInMillis(),
    PendingIntent.getBroadcast(ReminderFragment.this, 1, alertIntent, PendingIntent.FLAG_UPDATE_CURRENT));
}

AlertReceiver.java

public class AlertReceiver extends BroadcastReceiver {

    public AlertReceiver() {
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        createNotification(context, "Good morning", 
                           "You have a meeting with Mr. C today!", "Alert"); 
        //this is where the custom text must appear
    }

    public void createNotification(Context context, String s, String s1, String alert) {
        PendingIntent notificIntent = PendingIntent.getActivity(context, 0,
            new Intent(context, ReminderFragment.class), 0);

        NotificationCompat.Builder nBuilder = (NotificationCompat.Builder) new NotificationCompat.Builder(context)
            .setSmallIcon(R.drawable.icon)
            .setContentTitle(s)
            .setTicker(alert)
            .setContentText(s1);

        nBuilder.setContentIntent(notificIntent);
        nBuilder.setDefaults(NotificationCompat.DEFAULT_SOUND);
        nBuilder.setAutoCancel(true);
        NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
        mNotificationManager.notify(1, nBuilder.build());
    }
}

解决方法 1:

我会告诉你广播的接收机的工作原理。

假设您已经注册它正确的 manifest ,在发送 '广播' (废话),多像一个蜂窝塔。

你的接收器应该赶上 '' 那广播的消息。此广播消息中传递数据的方式是通过 extras

把一条附加消息的一般方法是通过把 ' extras ' 你可以通过添加︰

alertIntent.putExtra("key", "value");

有许多不同的数据类型可供选择的键和值,如字符串、 数组、 布尔值等

官方微信
官方QQ群
31647020