警报对话框未显示在android中

时间:2013-03-01 11:48:36

标签: android android-alertdialog

我正在进行主要活动和一个简单的类。主要活动是使用对话框方法,我从另一个类调用此方法

主要活动 -

public class WishareActivity extends Activity

 {

   public void onCreate(Bundle savedInstanceState)
  {
      super.onCreate(savedInstanceState);

      setContentView(R.layout.main);

   activity=this;

  //handler to call alertmsg()method

    alerthandler= new Handler() {
        public  void handleMessage(Message msg){

            alertmsg();
        } 
    }; 

      layouthandler= new Handler() {
        public  void handleMessage(Message msg){

            setContentView(R.layout .main);
        } 
    }; 


}


    //method to show the dialog box

   public static  void alertmsg()
{
     AlertDialog.Builder alert = new AlertDialog.Builder(WishareActivity.activity);

    alert.setTitle("Confirm");
    alert.setMessage("abc");

    alert.setPositiveButton("OK", new DialogInterface.OnClickListener() {

        public void onClick(DialogInterface dialog, int which)
        {

            dialog.dismiss();
        }
    });

    alert.setNegativeButton("Deny", new DialogInterface.OnClickListener() {

        public void onClick(DialogInterface dialog, int which) {




            dialog.dismiss();
        }
    });

    Log.d("abc","alert alert");
    AlertDialog s=alert.create();
    s.setOnDismissListener(new DialogInterface.OnDismissListener() { 
        public void onDismiss( DialogInterface dialog) { 

        }
    });

     Log.d("abc1","alert alert");

  alert.show();
 Log.d("abc1","alert alert alert");
    return;

}

connect.class

public class connect implements Runnable
{

 public void run()
    {

         WishareActivity.layouthandler.sendEmptyMessage(0);
         WishareActivity.alerthandler.sendEmptyMessage(0);
    }
}

在Logcat中显示

  abc : alert alert
  abc1: alert alert
  abc1 :alert alert alert

根据日志,方法被正确调用但对话框没有显示。

非常感谢任何帮助

2 个答案:

答案 0 :(得分:0)

更改警告对话框方法

public static  void alertmsg()

到这个

public static  void alertmsg(Context context)

像这样使用这个上下文变量

 AlertDialog.Builder alert = new AlertDialog.Builder(context);

使用此方法时,请执行此操作

WishareActivity.alertmsg(someactivity.this); // here someactivity will be the activity name where you are calling alert method

你的对话框会很好用。

答案 1 :(得分:0)

试试这个:

您可以像这样

创建没有静态的方法
public void alertmsg();

因为类不支持静态。它会在

下面显示此错误
   Cannot use this in a static context

我相信这将是有效的