0

メソッドを呼び出すスレッドがあり、例外が発生すると、そのスレッドのcatchブロックに戻ります。

後で、ハンドラーまたはトーストメッセージを呼び出して例外を表示するのが好きですが、それを呼び出してエラーを表示することができませんでした。

問題を解決するために私は何をしなければならないか、どんな考えでも。

前もって感謝します。

private void onSaveDialog() {       

    final ProgressDialog dialog = new ProgressDialog(this);

    dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
    dialog.setTitle("mApprove Advantage");
    dialog.setIcon(R.drawable.mapprove1);
    dialog.setMessage("Theme setting is in progress...");
    dialog.setIndeterminate(false);
    dialog.setCancelable(false);
    dialog.show();
    new Thread() {
        @Override
        public void run() {
            try {

                Thread.sleep(5000);     
                synchronized (this) {
                onsave();
            }
                dialog.cancel();
                onSetting();
            } catch (Exception e) {
                dialog.cancel();
                wrongurl=true;
                onFinishDialog1();
                System.out.println("url wrong");

            }

        }           
    }.start();  
    }

private void onFinishDialog1(){
    if(wrongurl){
        wrongurl=false;
        Toast.makeText(getApplicationContext(),
                "URL not Available.", Toast.LENGTH_LONG)
                .show();
    }

}
4

2 に答える 2

0

runOnUiThreadを使用して、スレッドからのトーストメッセージを次のように表示します。

   // your code here
  } catch (Exception e) {
    Your_Activity.this.runOnUiThread(new Runnable() {
          public void run() {
            dialog.cancel();
            wrongurl=true;
            onFinishDialog1();
           // show your message here
            Toast.makeText(Your_Activity.this, "Error", Toast.LENGTH_LONG).show(); 

          }
     });
   }
于 2012-12-28T09:55:09.353 に答える
0

これを使って :

runOnUiThread(new Runnable() 
        {                
          @Override
          public void run() 
            {
            try {

                Thread.sleep(5000);     
                synchronized (this) {
                onsave();
            }
                dialog.cancel();
                onSetting();
            } catch (Exception e) {
                dialog.cancel();
                wrongurl=true;
                onFinishDialog1();
                System.out.println("url wrong");

            }
          }
 });

ありがとう。

于 2012-12-28T09:56:57.670 に答える