Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在通过UI更新单击通知时启动应用程序?_Android_User Interface_Notifications - Fatal编程技术网

Android 如何在通过UI更新单击通知时启动应用程序?

Android 如何在通过UI更新单击通知时启动应用程序?,android,user-interface,notifications,Android,User Interface,Notifications,在我的应用程序中,我使用alarm manager实现android通知,以在特定时间获得通知。我在同一时间成功地获得了通知,但问题是当我的应用程序在后台时(通过单击“主页”按钮),若出现通知,并且用户单击通知,则显示强制关闭错误 我是这样设置通知的 public void setRepeatingAlarm(long tym) { Intent intent = new Intent(this, ReminderService.class); PendingIntent pe

在我的应用程序中,我使用alarm manager实现android通知,以在特定时间获得通知。我在同一时间成功地获得了通知,但问题是当我的应用程序在后台时(通过单击“主页”按钮),若出现通知,并且用户单击通知,则显示强制关闭错误

我是这样设置通知的

public void setRepeatingAlarm(long tym) 
{
    Intent intent = new Intent(this, ReminderService.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,
            intent, PendingIntent.FLAG_CANCEL_CURRENT);
    am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()
            + tym, 86400000, pendingIntent);
}

and this is my broadcast receiver class

public class ReminderService extends BroadcastReceiver {

NotificationManager nm;
@SuppressWarnings("deprecation")
@Override
public void onReceive(Context context, Intent intent)
{
    Intent intent_view = new Intent(Intent.ACTION_MAIN);
    intent_view.setClass(context.getApplicationContext(), CoachAppActivity.class);

    intent_view.setAction("android.intent.action.MAIN");
    intent_view.addCategory("android.intent.category.LAUNCHER");

    intent_view.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);
    nm = (NotificationManager) context
            .getSystemService(Context.NOTIFICATION_SERVICE);
    CharSequence from = "Coach App";
    CharSequence message = "View your daily tips.";
    PendingIntent contentIntent = PendingIntent.getActivity(context, 0,
            intent_view, 0);

    Notification notif = new Notification(R.drawable.icon,"View your daily tips.", System.currentTimeMillis());
    notif.setLatestEventInfo(context, from, message, contentIntent);
    notif.flags |= Notification.FLAG_AUTO_CANCEL;
    nm.notify(1, notif);
}
}

在上述代码的帮助下,我在用户想要的特定时间收到通知。现在我正在更新activity类的onResume()方法上的UI元素,如下所示

public void updateUi(List<ParseObject> objects) 
{
    txtData = (TextView) findViewById(R.id.textView1);
    txt_link1 = (TextView) findViewById(R.id.txt_link1);
    txt_link2 = (TextView) findViewById(R.id.txt_link2);

    txtData.setText(objects.get(0).getString("DailyInfo"));
    SpannableString content1 = new SpannableString(objects.get(0)
            .getString("Title_Hyperlink1"));
    content1.setSpan(new UnderlineSpan(), 0, content1.length(), 0);
    txt_link1.setText(content1);

    SpannableString content2 = new SpannableString(objects.get(0)
            .getString("Title_Hyperlink2"));
    content2.setSpan(new UnderlineSpan(), 0, content2.length(), 0);
    txt_link2.setText(content2);

    link1 = (objects.get(0).getString("Hyperlink1").toString() == null ? ""
            : objects.get(0).getString("Hyperlink1").toString());
    link2 = (objects.get(0).getString("Hyperlink2").toString() == null ? ""
            : objects.get(0).getString("Hyperlink2").toString());
}
public void updateUi(列出对象)
{
txtData=(TextView)findViewById(R.id.textView1);
txt_link1=(TextView)findViewById(R.id.txt_link1);
txt_link2=(TextView)findViewById(R.id.txt_link2);
setText(objects.get(0.getString(“DailyInfo”));
SpannableString content1=新的SpannableString(objects.get(0)
.getString(“Title_Hyperlink1”);
content1.setSpan(新的下划线span(),0,content1.length(),0);
txt_link1.setText(content1);
SpannableString content2=新的SpannableString(objects.get(0)
.getString(“Title_Hyperlink2”);
content2.setSpan(新的下划线span(),0,content2.length(),0);
txt_link2.setText(content2);
link1=(objects.get(0).getString(“Hyperlink1”).toString()==null?”
:objects.get(0.getString(“Hyperlink1”).toString();
link2=(objects.get(0).getString(“Hyperlink2”).toString()==null?”
:objects.get(0.getString(“Hyperlink2”).toString();
}

调试应用程序时,我发现无法获取UI元素的值。若我通常在不点击通知的情况下启动应用程序,它不会产生任何问题,应用程序会出现在前台。请帮助我在这个情况下,也让我知道在任何混乱的情况下

使用LogCat并检查与“强制关闭错误”关联的Java堆栈跟踪。是的,我也检查了我的LogCat。问题是,当我的应用程序启动时,单击时间文本字段值为空的通知。我不明白为什么会这样。。。