2011-05-10 140 views
0

我正在Android的列表视图控制。当我点击列表查看项目时,我想要一个进度对话框,并在请求的数据后,我想停止它线程进度对话框

嗯,我把这个对话框中的线程和当线程停止时,我想显示另一个对话框,但它是现实它不工作它触发下面

05-10 15给定的错误:05:10.607:ERROR/AndroidRuntime(820):未捕获的处理程序:线程MagentoBackground退出由于未捕获的异常 ** 05-10 15:05:10.617 :ERROR/AndroidRuntime(820):java.lang.RuntimeException:无法在未调用Looper.prepare()的线程中创建处理程序

My代码是这样的

  Runnable viewQuestions = new Runnable(){ 
      public void run() { 
       getViewAnswer(answerBean); 
      } 


     }; 
     thread = new Thread(null, viewQuestions, "MagentoBackground"); 
     thread.start(); 
     m_ProgressDialog = ProgressDialog.show(context, "Please wait...", "Retrieving data ...", true); 



     protected void getViewAnswer(AnswerBean answerBean) { 
      //fetch data code 
      if(viewAnswerBeans != null && viewAnswerBeans.size() > 0){ 
      m_ProgressDialog.dismiss(); 
      viewAndGiveAnswerDialog(viewAnswerBeans); 
          dialogbox.show(); 

     } else { 
      m_ProgressDialog.dismiss(); 
        dialogBox.show(); 

     } 
     } 

我的问题是这个“dialogBox.show();”不会工作,它不会显示该消息

任何一个可以帮助我对此

回答

0

使用处理

private Handler gps_ws_handler = new Handler() { 
    @Override 
    public void handleMessage(Message msg) { 
      m_ProgressDialog.dismiss(); 
      dialogBox.show(); 


    } 
}; 
+0

是的@Azlam是正确的:D你应该阅读 – PedroAGSantos 2011-05-10 10:02:18

0

创建活动中的处理程序。

Handler handler = new Handler(); 

然后在getViewAnswer里面,发布消息给它。

protected void getViewAnswer(AnswerBean answerBean) { 

    //fetch data code 


    handler.post(new Runnable() { 
    @Override 
    public void run() { 
     if(viewAnswerBeans != null && viewAnswerBeans.size() > 0){ 
     m_ProgressDialog.dismiss(); 
     viewAndGiveAnswerDialog(viewAnswerBeans); 
        dialogbox.show(); 

     } else { 
     m_ProgressDialog.dismiss(); 
      dialogBox.show(); 

     } 
    } 
}); 
    } 
0

对于后台任务使用的AsyncTask与ProgressDialog界,像它被示出here

0

试试这个

公共类YourActivity延伸活动{

private ProgressDialog m_ProgressDialog = null; 
private Runnable viewOrders; 
private ListView mListView; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.yourLayout); 

    viewOrders = new Runnable() { 

     public void run() { 
      loadList(); 
     } 
    }; 

    Thread thread = new Thread(null, viewOrders, "MagentoBackground"); 
    thread.start(); 
    m_ProgressDialog = ProgressDialog.show(YourActivity.this, "", 
      "Get Data...", true); 

} 

private Runnable returnRes = new Runnable() { 

    public void run() { 



      mListView = (ListView) findViewById(R.id.yourList); 

      //create here your adapter 

      mListView.setAdapter(yourAdapter); 
      mListView.setOnItemClickListener(new OnItemClickListener() { 

       public void onItemClick(AdapterView<?> arg0, View v, 
         int position, long arg3) { 

        //on item click 
       } 
      }); 
     } 
     m_ProgressDialog.dismiss(); 
    } 
}; 

private void loadList() { 
    try { 
     /* Make your request Here 
        The progress Dialog is dismissed automatically after request is finished */ 
     } 

     Thread.sleep(1000); 

    } catch (Exception e) { 
    } 

    runOnUiThread(returnRes); 
} 

}