用到Notification遇到一些问题记录一下
1.Notification的点击事件(点击弹出对话框)
网上有很多做法,我的做法是:
(1)点击Notification跳转到一个Activity
(2)将Activity的主题设置为:类似android:theme="@style/Theme.AppCompat.Dialog"这样的Dialog样式,这样Activity就会以对话框的形式悬浮在另一个Activity之上。
(3)将Activity的背景设置为#80000000,使Activity背景类似透明
(4)在Activity里面设置Dialog弹出
(5)如果是自定义的对话框,设置代码可以参考下面的
final AlertDialog dialog = new AlertDialog.Builder(this).create();
dialog.show();
dialog.getWindow().setContentView(R.layout.notification_view);
TextView content= (TextView) dialog.findViewById(R.id.no_content);
content.setText(R.string.data_update);
dialog.getWindow().findViewById(R.id.no_download).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(UpdateTestActivity.this,"正在开始新数据下载",Toast.LENGTH_LONG).show();
dialog.dismiss();
finish();
}
});
dialog.getWindow().findViewById(R.id.no_cancel).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
finish();
}
});
2.点击一次消失
在网上看到一种方法:manager.cancel();我的结果是这个方法直接把notification干掉了,根本不显示。
推荐下面两种:
(1)设置一个flags就好notification.flags |= Notification.FLAG_AUTO_CANCEL;(一定要加这个"|",不然没效果)
(2)builder.setAutoCancel(true);
3.显示多个Notification时,点击任何一个跳转的都是同一个界面
这和PendingIntent.getActivity(context,0,intent,0);这个方法的第二个参数有关。Notification用在不同场景默认0是正确的,如果是同一场景下有多个,那就需要修改它的值。
4.android.view.WindowLeaked:异常
在执行AlterDialog的点击事件时,直接关掉Activity,没有先关闭dialog导致的窗体溢出异常