移动到另一个活动时如何关闭活动?

时间:2012-10-24 20:11:57

标签: android android-activity

我正在构建一个简单的应用,通过按下按钮并按下我正在运行新Activity的消息,在通知栏中创建消息。 当我通过按下然后再次运行来关闭Activity时,按下按钮不执行任何操作。 我还创建了一个单例NotificationManager,以便在第二个活动的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();
                }
            }
        });
    }

顺便说一下,在我的第二个活动中,我所做的只是关闭当前通知:

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

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

1 个答案:

答案 0 :(得分:0)

嗯,您必须使用不同的ID创建不同的通知。 在nm.notify(0, notify);中,您无法为每个通知提供相同的ID。 因此,只需尝试为您创建的每个通知提供不同的通知ID。 希望它能起作用