0

我试图让我的应用程序创建一个通知,但这段代码给了我编译错误:

public void makeRing(Context context, boolean notify)
    {

        if (notify)
        {
            NotificationCompat.Builder mBuilder =
                    new NotificationCompat.Builder(context)
                    //.setSmallIcon(R.drawable.notification_icon)
                    .setContentTitle("My notification")
                    .setContentText("Hello World!");
            // Creates an explicit intent for an Activity in your app
            Intent resultIntent = new Intent(context, MainActivity.class);

            // The stack builder object will contain an artificial back stack for the
            // started Activity.
            // This ensures that navigating backward from the Activity leads out of
            // your application to the Home screen.
            TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
            // Adds the back stack for the Intent (but not the Intent itself)
            stackBuilder.addParentStack(MainActivity.class);
            // Adds the Intent that starts the Activity to the top of the stack
            stackBuilder.addNextIntent(resultIntent);
            PendingIntent resultPendingIntent =
                    stackBuilder.getPendingIntent(
                        0,
                        PendingIntent.FLAG_UPDATE_CURRENT
                    );
            mBuilder.setContentIntent(resultPendingIntent);
            NotificationManager mNotificationManager =
                (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
            // mId allows you to update the notification later on (first number)
            mNotificationManager.notify(5954, mBuilder.build());

        }

它是直接取自 Android 开发者网站的代码。错误出现在“TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);”的行中,其中 create 带有下划线,它表示“对于 TaskStackBuilder 类型,方法 create(Context) 未定义”。

此外,在最后一行 build() 带有下划线,它表示“对于 NotificationCompat.Builder 类型的 build() 方法未定义。

我该如何解决这些?

4

2 回答 2

3

我在使用支持库时遇到了同样的问题。似乎它没有实现这些方法。这是有效的代码:

NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
        .setSmallIcon(R.drawable.ic_action_search)
        .setContentTitle("New search")
        .setContentText("Que hay de nuevo, viejo");
Intent resultIntent = new Intent(this, Temporal.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.from(this);
stackBuilder.addParentStack(Temporal.class);
stackBuilder.addNextIntent(resultIntent);
PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
builder.setContentIntent(resultPendingIntent);
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
manager.notify(112, builder.getNotification());

变化是

TaskStackBuilder stackBuilder = TaskStackBuilder.from(this);

代替

TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);

manager.notify(112, builder.getNotification());

代替

manager.notify(112, mBuilder.build());

已编辑

更好的解决方案:只需下载最新的 Android 支持库。

于 2013-07-16T15:57:29.757 回答
0

您可能尚未下载所需版本的支持库。您可以在此处查看所有版本,并找出您需要的版本。

我相信这是包含 Notifications 更改的最新版本:

支持包,第 10 版(2012 年 8 月)

v4 支持库的更改:

    Added support for notification features introduced in Android 4.1 (API level 16) with additions to NotificationCompat.

但您可能可以下载最新版本,以防万一。

于 2013-03-25T03:25:06.573 回答