1

ボタンを押してメッセージを押すことで通知バーにメッセージを作成する簡単なアプリを作成していますActivity。押して閉じてActivityから再度実行すると、ボタンを押しても何も起こりません。NotificationManagerまた、2 番目のアクティビティの onCreate メソッドで、通知バーからメッセージ アイコンを自動的に削除するシングルトンも作成しました。シングルトン クラスが残っているようで、新しくObject作成することはできません。アクティビティを強制的に終了する必要があり、そうして初めてシングルトン クラスが解放されると思います。android:noHistory="true"でアクティブ化された両方で設定を試みmanifest.xml、またでこれを作成しましたMainActivity

public void onContextMenuClosed(Menu menu) {
        super.onContextMenuClosed(menu);
        this.finish();
    }

そして、MessageViewerアクティビティでこれを試しました:

public void onBackPressed() {
        super.onBackPressed();
        this.finish();
    }

これは私のコードです:

public class NotifyManager {
    private static NotificationManager notificationManager=null;

    public static NotificationManager getInstance() {
        if(notificationManager==null) {
            throw new NullPointerException("NotificationManager has not been set yet.");
        }
        else {
            return notificationManager;
        }
    }

    public static void setNotificationManager(NotificationManager nm) throws NotificationManagerException {
        if(notificationManager==null) {
            notificationManager = nm;
        }
        else {
            throw new NotificationManagerException("NotificationManager has already been set.");
        }
    }
}



public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button b = (Button) findViewById(R.id.button1);
        b.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                try {
                    NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
                    NotifyManager.setNotificationManager(nm);
                    Notification notify = new Notification(
                            R.drawable.icon,
                            "New message", System.currentTimeMillis());
                    Context context = MainActivity.this;
                    CharSequence title = "You have a new message";
                    CharSequence details = "";
                    Intent intent = new Intent(context, MessageViewer.class);
                    PendingIntent pending = PendingIntent.getActivity(context, 0, intent, Intent.FLAG_ACTIVITY_NEW_TASK);
                    notify.setLatestEventInfo(context, title, details, pending);
                    nm.notify(0, notify);
                }
                catch(Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

ちなみに、2 つ目のアクティビティでは、現在の通知を閉じるだけです。

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_message_viewer);

        NotifyManager.getInstance().cancel(0);
    }
4

1 に答える 1

0

さて、異なるIDで異な​​る通知を作成する必要があります。nm.notify(0, notify);すべての通知に同じ ID を与えることはできません。そのため、作成するすべての通知に異なる通知 ID を与えるようにしてください。うまくいけばうまくいく

于 2012-10-24T20:30:37.987 に答える