您的位置:首页 > 其它

broadcastreceiver中显示dialog以及重启当前activity

2016-08-02 18:40 218 查看
1,今天在广播接器里写了个dialog ,结果怎么都显示不出来。啥requestFeature() must be called before adding content,啥玩意 除了坑爹想不出别的了,"



alertDialog.getWindow().setContentView(layout);//关键位置 "竟然要“alertDialog.show();”完了才能设置,醉醉的了。


AlertDialog alertDialog;

void showMsgDia(final Context context)
{
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(context);
alertDialog = dialogBuilder.create();
LayoutInflater inflaterDl = LayoutInflater.from(context);
RelativeLayout layout = (RelativeLayout) inflaterDl.inflate(R.layout.dialog_update, null);
alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
alertDialog.show();//关键位置
alertDialog.getWindow().setContentView(layout);//关键位置

// 取消按钮

Button btnCancel = (Button) layout.findViewById(R.id.btn_cancle);
btnCancel.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
alertDialog.dismiss();
Toast.makeText(context, R.string.dialog_cancle_msg, Toast.LENGTH_SHORT).show();
}
});

// 确定按钮

Button btnOK = (Button) layout.findViewById(R.id.btn_update);

btnOK.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
//重启当前activity,因为activity的更新逻辑太复杂了,所以就直接重启了,然后就出现两个task,返回两次才能出来,于是乎就网上搜啊,
//基本说的差不多但是一般都解决不了问题,然后就瞎试,如下,再给activity设个启动模式android:launchMode="singleTop"就ok了。

 context.startActivity(new Intent(context, MainActivity.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK));// 跳转立马更新
alertDialog.dismiss();
}
});
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: