用android dialog 时遇到的问题

来源:互联网 发布:建筑施工安全网络平台 编辑:程序博客网 时间:2024/04/30 11:40

今天用到android里面的dialog,是这样的,

LayoutInflater factory = LayoutInflater.from(this);

            final View textEntryView = factory.inflate(R.layout.test, null);;

                    builder.setView(textEntryView);

其他的部分全删了,也就是说我只留了dialog中间的view。(什么setIcon(),setTitle() 还有默认下面的两个按钮 都去掉了)。。

中间是view。里面布局了两个按钮,于是我对其添加监听。。

ImageButton imageButton = (ImageButton)findViewById(R.id.but1);
                imageButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
System.out.println("...");
}
});

然后测试,抛出空指针异常,原因自己感觉好像是页面没有出现就去找那个按钮,所以抛出异常。

改了改, 改成这样  : ImageButton imageButton =  (ImageButton)textEntryView.findViewById(R.id.but1);  ,加了个textEntryView,意思是从这个页面上找。但是却抛出这种异常, 

,我英语不好,大概的意思是首先把父窗口的view移除了,但是我必须要用到父窗口,不能移除,算了,重写一个吧。。。。


public class MyDialog extends Dialog {
Context context;
public MyDialog(Context context) {
super(context);
}
@Override
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState);
this.setContentView(R.layout.test1);      
ImageButton imageButton = (ImageButton) findViewById(R.id.but1);
imageButton.setOnClickListener(new android.view.View.OnClickListener() {
@Override
public void onClick(View v) {
System.out.println("2....");
}
});
}
}

上面重写了Dialog,

 Dialog ad = new MyDialog(MainActivity.this);
ad.show();

上面的两行都懂的!。。

 这样弹窗后就可以点击Dialog View里面的按钮并添加事件了。。。。

ps:擦,感冒了写博客就是慢!!!