0

このようにアクティビティを拡張する単純なクラスがあります

public class About extends Activity
{
  private ProgressDialog pdia;
  private TextView tvAbout;
  private WebView vwAbout;
  public void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.about);


    vwAbout = (WebView)findViewById(R.id.vwViewAbout);
    String content = new String();
    try {
        URL url = new URL("http://xxx.prodevAbout.txt");
        BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
        String str;
        while ((str = in.readLine()) != null)
        {
            content+=str + "\n";
            vwAbout.loadData(content, "text/html", null);
        }
        in.close();
    } catch (Exception e)
    {
        vwAbout.loadData("error message", "text/html", null);
    }
  }
}

私がやりたいことは、ウェブサイトからコンテンツを読み込んでいるときにプログレスバーを追加したいということで、このコードを見つけました

 private ProgressDialog pdia;

 @Override
 protected void onPreExecute(){ 
    super.onPreExecute();
         pdia = new ProgressDialog(yourContext);
         pdia.setMessage("Loading...");
         pdia.show();    
 }

 @Override
 protected void onPostExecute(String result){
    super.onPostExecute(result);
         pdia.dismiss();
 }

このコードを追加しましたが、onPreExecute メソッドを解決できません。どうすればよいですか?

ありがとう;

4

2 に答える 2

0

このコードを追加しましたが、onPreExecute メソッドを解決できません。どうすればよいですか?

onPreExecuteこれはメソッドであるため解決されていないため、 onPreExecute を使用するようにクラスAsyncTaskを拡張する必要がありAsyncTaskます。AsyncTask を使用して現在のコードを次のように変更します。

public class About extends Activity
{
   [...your code here...]
  public void onCreate(Bundle savedInstanceState)
  {

   [...your code here...]
   // execute AsyncTask as 
    new LongOperation(About.this).execute("");
  }
  [...your code here...]

   public class WebapiOperation extends AsyncTask<String, Void, String> {
     Context context;
     WebapiOperation(Context context){
     this.context=context;
    }
      @Override
      protected void onPreExecute() {
         // show ProgressDialog here
         pdia = new ProgressDialog(context);
      }
      @Override
      protected String doInBackground(String... params) {

             // make web service access task here
            return null;
      }      

      @Override
      protected void onPostExecute(String result) {  
            // ProgressDialog here
      }

}
于 2013-01-06T14:24:25.013 に答える
0

アプリに進行状況ダイアログを追加する方法は次のとおりです (これまで問題はありませんでした)。

Runnable runable = new Runnable() {

        @Override
        public void run() {

            SofiaLiveCafeActivity.this.runOnUiThread(new Runnable() {

            @Override
            public void run() {
                    if (Build.VERSION.SDK_INT > Build.VERSION_CODES.HONEYCOMB){
                        progressDialog = new ProgressDialog(SofiaLiveCafeActivity.this, ProgressDialog.THEME_HOLO_LIGHT);
                    } else {
                        progressDialog = new ProgressDialog(SofiaLiveCafeActivity.this);
                    }
                    progressDialog.setMessage("Loading! Pleasе wait...");
                    progressDialog.setIndeterminate(true);
                    progressDialog.show();
                }
            });


            // CONNECT TO SERVER AND DOWNLOAD DATA


            SofiaLiveCafeActivity.this.runOnUiThread(new Runnable() {

            @Override
            public void run() {

                    progressDialog.dismiss();

                }
            });
            }
        }
    };
    new Thread(runable).start();
于 2013-01-06T14:25:11.537 に答える