0

こんにちは、私は android android で作業しており、非同期タスクでいくつかのタスクを実行しています。非同期タスクを呼び出して、文字列をパラメーターとして渡したいと思います。私はグーグルを検索しましたが、運が悪かったので、非同期タスクを呼び出すコードを次に示します

new warkah_detail().execute(id_warkah);

ここに私の非同期タスクがあります

class warkah_detail extends AsyncTask<String, String, String>
{
    @Override
    protected void onPreExecute()
    {
        pDialog = new ProgressDialog(warkah.this);
        pDialog.setMessage("Fetching Details...");
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(false);
        pDialog.show();
    }

    @Override
    protected String doInBackground(String... args)
    {
        try
        {
            List<NameValuePair> params = new ArrayList<NameValuePair>();
            params.add(new BasicNameValuePair("id_warkah", id_warkah));
            json = jParser.makeHttpRequest(url_warkah, "POST", params);

これらのコードは、このようなエラーを発生させますCaused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()

文字列を非同期タスクに渡す最良の方法は何ですか? どんな助けにも感謝します。ありがとう。

[更新]トーストを削除しましたが、呼び出されたタスクから非同期タスクに渡される正しい文字列をまだ受け取りません。何か案が?

4

5 に答える 5

4
Toast.makeText(getApplicationContext(), "ID : " + id_warkah, Toast.LENGTH_LONG).show();

トーストは UI スレッドで実行する必要があります。上に移動するonPostExcutedか、使用しますrunOnUiThread

あなたStringargs[0]。のドキュメントを読む必要がありますvarargs

于 2013-06-17T08:49:40.457 に答える
1

onBackground メソッドから以下の行を削除するだけです。

Toast.makeText(getApplicationContext(), "ID : " + id_warkah, Toast.LENGTH_LONG).show();

onPostExecute メソッドに配置するか、runOnUiThread を使用します。

于 2013-06-17T08:51:18.270 に答える
0

blackbelt が示唆するように、バックグラウンド スレッドで ui を更新しています。onPostExecute() で実行します。または runOnUiThread を使用します

      runOnUiThread(new Runnable() //run on ui thread
      {
           public void run() 
           { 
               // update ui     
           }
      });

パラメータを使用するには、次のように使用します

       params.add(new BasicNameValuePair("id_warkah", args[0]));

詳細については、ドキュメントを確認できます

http://developer.android.com/reference/android/os/AsyncTask.html

パラメータを asynctask のコンストラクタに渡して、同じものを使用することもできます。

于 2013-06-17T08:51:58.397 に答える