在linearlayout类上显示对话框

时间:2013-12-16 10:38:38

标签: android dialog android-linearlayout

我正在开发一个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);

我必须使用什么而不是上下文? 我必须以任何方式完成它。请帮助我的朋友

1 个答案:

答案 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来弹出对话框。