2016-01-24 196 views
-1

我知道這是重複的,但相信我我已經嘗試了許多可用的代碼,仍然沒有得到這個工作。在android中顯示對話框

下面是我的代碼

public class LookIn extends AppCompatActivity implements View.OnClickListener{ 
@Override 
    protected void onCreate(Bundle savedInstanceState) { 
    //Initializing properties 
} 
public void onClick(View v) { 
// Event for button click 
callHelper(); 
} 
private void callHelper() 
{ 
    List result=null; 
    try { 
       String jsonResponse=new CallmeGetHelperAsyncTask(this).execute(params).get(); 
       result= RestUtil.getUserList(jsonResponse); 
    } 
    catch (InterruptedException e) { 
       Log.e("Callme", Log.getStackTraceString(e)); 
    } catch (ExecutionException e) { 
       Log.e("Callme", Log.getStackTraceString(e)); 
     } 
     catch(JSONException x) 
     { 
      Log.e("Callme",Log.getStackTraceString(x)); 
     } 
    } 
} 

下面是我的AsyncTask類

public class CallmeGetHelperAsyncTask extends AsyncTask<String,Void,String > { 
private AppCompatActivity activity=null; 
    private ProgressDialog dialog=null; 
    public CallmeGetHelperAsyncTask(){} 
    public CallmeGetHelperAsyncTask(AppCompatActivity activity){ 
     this.activity=activity; 
     //this.dialog= dialog; 
    } 

    @Override 
    protected void onPreExecute() { 
    if(this.dialog!=null) 
     { 
      Log.v("Callme", "Starting Dialog"); 

      dialog = ProgressDialog.show(this.activity, "title", "message"); 
      // this.dialog.setMessage("Looking for Helpers"); 
      this.dialog.show(); 
     } 
     else 
     { 
      dialog = ProgressDialog.show(this.activity, "title", "message"); 

     } 
    } 
    @Override 
    protected void onPostExecute(String s) { 
     if(this.dialog!=null) 
     { 
      Log.v("Callme","Closing Dialog"); 
      this.dialog.dismiss(); 
     } 
     else 
     { 
      Log.v("Callme","Dialog is not initiated in CallmeGethelperAsyncTask"); 
     } 
    } 
    @Override 
    protected String doInBackground(String... params) { 
    //call to webservice 
    } 
    } 

我不能夠得到什麼是與上面的代碼的問題。

我發現了一個更奇怪的東西(奇怪可能只是因爲我是新的)。我嘗試從我的ActivityClass以及我的AsyncTask中打印Thread.currentThread.getId(),並且出乎意料地打印出「1」。

如果我沒有錯,那麼說,這兩個代碼是從同一個線程運行。

關於此內容我已閱讀Running multiple AsyncTasks at the same time -- not possible?其中說,早些時候的線程池只包含1個線程,但我使用Android 5.1應該包含5個線程。所以我又對此感到困惑。

請花點時間來解釋。謝謝

回答

0

替換此:

public CallmeGetHelperAsyncTask(AppCompatActivity activity){ 
     this.activity=activity; 
     //this.dialog= dialog; 
    } 

有:

private Context context; 
public CallmeGetHelperAsyncTask(Context context){ 
     this.context=context; 
    } 

這:

dialog = ProgressDialog.show(this.activity, "title", "message"); 

有:

dialog = ProgressDialog.show(this.context, "title", "message"); 

這個:

String jsonResponse=new CallmeGetHelperAsyncTask(this).execute(params).get(); 

有:

String jsonResponse=new CallmeGetHelperAsyncTask(LookIn.this).execute(params).get(); 

雖然我寧可不使用進度對話框的靜態方法秀和建設的實際進度對話框。

希望它有幫助!

+0

應用上面的變化,但沒有變化:( –