0

メイン アクティビティと単純なクラスがあります。メイン アクティビティにはダイアログ ボックス メソッドがあり、このメソッドを別のクラスから呼び出しています。

主な活動-

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

ログによると、メソッドは正しく呼び出されますが、ダイアログ ボックスは表示されません。

どんな助けでも大歓迎です

4

2 に答える 2

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

ダイアログは非常にうまく機能します。

于 2013-03-01T11:57:32.937 に答える
0

これを試して:

このように静的なしでメソッドを作成します

public void alertmsg();

クラスが静的をサポートしていないためです。このエラーを以下に表示します

   Cannot use this in a static context

私はこれがうまくいくと確信しています

于 2013-03-01T12:06:23.080 に答える