2016-01-24 109 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

应用上面的变化,但没有变化:( –