我正在开发一个Android应用程序。在我的应用程序中,我使用的是linearlayout类,我想在按钮上打开一个对话框。所以我写了我的代码,如下所示
public class LeftSlide extends LinearLayout {
private Context context;
Button clickMeBtn;
public LeftSlide(Context context) {
super(context);
init(context);
}
public LeftSlide(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
private void init(Context context) {
this.context = context;
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
layout = (RelativeLayout) inflater.inflate(R.layout.left_slide, null);
layout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.WRAP_CONTENT));
addView(layout);
clickMeBtn= (Button) layout.findViewById(R.id.clickme);
clickMeBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
showActionSheet();
}
});
以下是对话框的代码
public void showActionSheet() {
final Dialog myDialog = new Dialog(context, R.style.CustomDialogTheme);
// final Dialog myDialog = new Dialog(MyBizcard.this,
// R.style.CustomTheme);
myDialog.setContentView(R.layout.pending_dialog);
myDialog.show();
myDialog.getWindow().setGravity(Gravity.CENTER);
}
当我执行应用程序时,我收到异常
:android.view.WindowManager $ BadTokenException:无法添加窗口 - 令牌null不适用于应用程序
我知道错误是由于以下行
final Dialog myDialog = new Dialog(context, R.style.CustomDialogTheme);
我必须使用什么而不是上下文? 我必须以任何方式完成它。请帮助我的朋友
答案 0 :(得分:0)
private Context context;
public LeftSlide(Context context) {
super(context);
init(context);
this.context = context;
}
public LeftSlide(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
this.context = context;
}
将构造函数的代码更改为this,并使用come context来弹出对话框。