2014-06-26 62 views
0

我想添加一個警報對話框來執行一個請求時有一個加載狀態。是否有可能做這樣的事情:如何在onClick方法上添加警報對話框?

xButton.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     xButton.setVisibility(View.INVISIBLE); 

     AlertDialog alertDialog = new AlertDialog.Builder(this).create(); 
     alertDialog.setMessage(Please wait); 
     alertDialog.show(); 

     // do some work here 
     alertdialog.dismiss 

    } 
}); 

     } 
     return view;  

預先感謝您

+0

你所需要的定製對話或默認對話 – Nithinlal

+0

您應該使用的AsyncTask和ProgressDialog對這種情況 – naveejr

回答

1

如果您沒有任何特定的原因使用警報對話框,那麼你可以使用進度對話框。

@Override 
public void onClick(View v) { 
    xButton.setVisibility(View.INVISIBLE); 

      new AsyncTask<Void, Void, Void>(){ 

        ProgressDialog mProgressDialog; 
        @Override 
        protected void onPreExecute() { 
         super.onPreExecute(); 
         mProgressDialog = new ProgressDialog(<YourActivityClassName>.this); 
         mProgressDialog.setMessage("message"); 
         mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
         mProgressDialog.setCancelable(false); 
         mProgressDialog.show(); 
        } 

        @Override 
        protected Void doInBackground(Void... params) { 
         // Do your work 
         return null; 
        } 

        protected void onPostExecute(Void result) { 
         super.onPostExecute(result); 
         mProgressDialog.dismiss(); 
        }; 

       }.execute(); 


} 
+0

嗨Naveejr,試過你的代碼,我發現崩潰06-27 11:35:28.780 30227-30227/com.xxx.xxx E/WindowManager:android.view.WindowLeaked:Activity com.xxx.xxx.MainActivity has泄露的窗口com.android.internal.policy.impl.PhoneWindow $ DecorView {42deaf08 VE .... R ...... D 0,0-1061,288}最初在這裏添加任何ideeas爲什麼?預先感謝您.P.S-我正在使用Android Studio Adrian –

+0

@AdrianAntal我修改了代碼,現在試一試並告訴我結果。 – naveejr

+0

發生一些崩潰:06-27 13:55:21.934 11382-11382/com.xxx.xxx E/WindowManager:android.view.WindowLeaked:Activity com.xxx.xxx.MainActivity泄漏了窗口com.android.internal.policy .impl.PhoneWindow $ DecorView {42c11da0 VE .... R ...... D 0,0-1061,288}這是最初在這裏添加的。 –

0

使用一個函數來顯示警報,並從功能的onclick調用它。

public void showAlert() { 
     AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
       mcontext); 

     // set title 
     alertDialogBuilder.setTitle("Headding"); 

     // set dialog message 
     alertDialogBuilder.setMessage("message") 
       .setCancelable(false) 
       .setPositiveButton(mcontext.getResources().getString(R.string.Ok), new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) { 
//      
        } 
       }); 
     // create alert dialog 
     AlertDialog alertDialog = alertDialogBuilder.create(); 
     // show it 
     alertDialog.show(); 
    } 
+0

如果您正在使用的AsyncTask,您可以從preExecute/postexecute稱之爲 – Jithu

0

嗨艾德里安給一個簡單的代碼希望這有助於。美好的一天...

AlertDialog.Builder alertDialog=new AlertDialog.Builder(context); 
         alertDialog.setTitle("title"); 
         alertDialog.setIcon(R.drawable.alert_image); 
         alertDialog.setMessage("alert message").setCancelable(false).setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog,int id) { 
           current_activity.this.finish(); 
           Intent inlog=new Intent(current_activity.this,target_activity.class); 
           startActivity(inlog); 
          } 
         }) 
         .setNegativeButton("No", new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog,int id) 
          { 
           dialog.cancel(); 
          } 
         }); 

         AlertDialog alertDialog2=alertDialog.create(); 
         alertDialog2.show(); 
+0

只是把它裏面的onclick或使用本在函數內部調用它onClick() – Wolverine

+0

我在我的onClick方法中添加了它,AlertDialog alert = new AlertDialog.Builder(context).create(); alert.setMessage(「Please wait ...」); alert.setCancelable(false); alert.show(); //做一些工作 alert.dismiss();問題是,它根本沒有顯示它。如果我拿出alert.dismiss();警報對話框在那裏,但它保持在那裏。有什麼想法嗎?先謝謝你。 –

+0

@AdrianAntal此警報有兩個按鈕,因此單擊其中任何一個動作都會發生,警報將被解除。如果您需要在特定時間間隔後自動關閉警報,則可以使用Progressdialog而不是alertdialog或僅使用Toast。 – Wolverine