Alert Builder我错过了什么

时间:2012-09-11 05:17:06

标签: java android android-alertdialog

我正在尝试在单击按钮下的BaseAdapter内添加Alert Builder。 这是我的代码

 Button btn=(Button)vi.findViewById(R.id.btnAdd);
 btn.setOnClickListener(new OnClickListener(){

                             AlertDialog.Builder dialogBox=new AlertDialog.Builder(this);
                 dialogBox.setPositiveButton("Yes", new DialogInterface.OnClickListener(){
                       public void onClick(DialogInterface dialog, int which) {
                          String facebookFriendName = friendsName.getText().toString();
                                String FACEBOOKID = FBID;
                               Log.i("AKO SI: ", ""+facebookFriendName + FACEBOOKID);
                       }
                    });
                    dialogBox.setNegativeButton("No", new DialogInterface.OnClickListener(){

                           public void onClick(DialogInterface dialog, int which) {

                           }
                        });
                    dialogBox.show();     

现在我收到错误 alert_box.show();

似乎有什么问题?

修改 根据您的建议和意见,我更改了上面的代码 并在我的活动

上添加一个getter和setter
private Context context;  
/////////
            public Context getContext() {
        return context;
    }

    public void setContext(Context context) {
        this.context = context;
    }

在我的活动类下绑定

    adapter2 =new LazyAdapterGetFriends(this, songsList);   
             adapter2.getContext();    
             list.setAdapter(adapter2);

但我仍然收到错误说:

*09-11 13:48:49.298: E/AndroidRuntime(1226):    at com.fb.connect.LazyAdapterGetFriends$1.onClick(LazyAdapterGetFriends.java:95)

*pointing at AlertDialog.Builder dialogBox=new AlertDialog.Builder(context);

5 个答案:

答案 0 :(得分:1)

试试这个

  Button btn=(Button)vi.findViewById(R.id.btnAdd);
  btn.setOnClickListener(new OnClickListener(){

    public void onClick(View arg0) {
            // TODO Auto-generated method stub


        AlertDialog.Builder ab=new AlertDialog.Builder(MainActivity.this);
        ab.setPositiveButton("Yes", new DialogInterface.OnClickListener(){
           @Override 
           public void onClick(DialogInterface dialog, int which) {
              String facebookFriendName = friendsName.getText().toString();
                    String FACEBOOKID = FBID;
                   Log.i("AKO SI: ", ""+facebookFriendName + FACEBOOKID);
           }
        });
        ab.setNegativeButton("No", new DialogInterface.OnClickListener(){
               @Override 
               public void onClick(DialogInterface dialog, int which) {

               }
            });
        ab.show();                       
    }                
});

希望帮助

修改

尝试this.

AlertDialogs只能使用Activity上下文创建,因此getApplicationContext()将无效。而是将以下全局变量添加到您的Activity文件中:

Context mContext;

然后将以下内容添加到onCreate():

mContext = this;

现在,改变:

AlertDialog.Builder builder = new AlertDialog.Builder(getApplicationContext());

AlertDialog.Builder builder = new AlertDialog.Builder(mContext);

答案 1 :(得分:0)

在显示对话框之前,您必须创建一个警报对话框。

//创建警报对话框

AlertDialog alertDialog = alert_box.create();

//显示

alertDialog.show();

请检查此link

答案 2 :(得分:0)

这可以解决你的问题

AlertDialog alertDialog = alertDialogBuilder.create();

答案 3 :(得分:0)

你的问题在于以下一行

AlertDialog.Builder alert_box = new AlertDialog.Builder(activity.getApplicationContext());

您应该使用本地存储的上下文变量,而不是使用activity.getApplicationContext() AlertDialog.Builder 的getApplicationContext失败。

答案 4 :(得分:0)

尝试使用以下代码,因为它需要Activity上下文而不是Application context

 AlertDialog.Builder alert_box = new AlertDialog.Builder(activity.this);