如何从非活动类修改textview? Android的

时间:2013-04-27 02:55:53

标签: android notifications textview remoteview

我想修改一个来自alarmmanager类的onReceive方法的TextView,这个类不会扩展活动。警报发送一个创建通知的意图,我想这样做,所以单击通知将打开一个textview,其中包含我在此onReceive方法中获得的特定字符串。

RemoteViews contentView = new RemoteViews(context.getPackageName(),R.layout.notify_layout);

contentView.setTextViewText(R.id.notetext,my_message);
notif.contentView = contentView;

我尝试使用上面的RemoteView和通知意图执行此操作,但它似乎不起作用。

我知道我无法使用findViewById访问它,但我应该采取什么方法?

这来自处理意图的代码

@Override
public void onCreate(Bundle savedInstanceState) 
{
super.onCreate(savedInstanceState);
setContentView(R.layout.notify_layout);

NotificationManager nm = (NotificationManager) 
    getSystemService(NOTIFICATION_SERVICE); nm.cancel(getIntent().getExtras().getInt("com.myapp.NotificationDisp")); 

然后我在这里有完整的通知。我知道它已被弃用了,我应该使用构建器,但我需要将它兼容回姜饼,而这似乎不是构建器。

Intent i = new Intent("com.MyApp.NotificationDisp");
            i.putExtra("com.MyApp.NotificationDisp", 1);
            nm = (NotificationManager) context
                    .getSystemService(Context.NOTIFICATION_SERVICE);

                  @SuppressWarnings("deprecation")
                Notification notif = new Notification(R.drawable.ic_launcher,
                    "Myapp", System.currentTimeMillis());
                  //

                 RemoteViews contentView = new RemoteViews(context.getPackageName(),
                            R.layout.notify_layout);
                  contentView.setTextViewText(R.id.notetext,
                    my_message);
                  notif.contentView = contentView;
                  PendingIntent contentIntent = PendingIntent.getActivity(context, 0,
                            i, 0);
                  notif.contentIntent = contentIntent;
                  //
                  notif.setLatestEventInfo(context, "Myapp", my_message, contentIntent);
                  notif.vibrate = new long[] { 100, 250, 100, 500}; 
                  nm.notify(1, notif);

因此,这会在状态栏中显示正确文本的通知,但是当我点击它时,它只会显示空白的文本视图。 xml notify_layout应该设置正常。

0 个答案:

没有答案