1

Twitterアプリの検索コンポーネントに取り組んでいます。私は通常のクラスで解析を行っており、その方法でアクティビティにビューを追加しようとしましたが、機能しませんでした。私の投稿:
Android 2.3.3:(LinearLayout)findViewById(R.id。<linear_layout_id>)からLinearLayoutを取得するとクラッシュ
する非常に役立つstackoverflowユーザーから、すべての解析呼び出しを非同期タスクに入れるのが最善の選択だと言われました。 onPostExecute()のアクティビティにビューを追加します。

だから私の質問は、XMLからレイアウトを選択し、それにビューを追加して、asyctaskのonPostExecute()内に保存できるかということです。

4

2 に答える 2

2

もちろん、ビューを渡すか、ビューを含むアクティビティを AsyncTask のコンストラクターに渡します。doInBackground メソッドでこれらのオブジェクトを使用しないようにしてください。

実際、私はちょうど先週似たようなことをしました:

@Override
protected void onPostExecute(Article[] articles) {
    ArrayAdapter<Article> arrayAdapter = new ArticleAdapter(context, articles);
    listView.setAdapter(arrayAdapter);
    listView.setVisibility(View.VISIBLE);
    progressBar.setVisibility(View.GONE);
}

listView は、context と同じようにコンストラクター引数として渡される ListView であり、ビューを含む Context (アクティビティ) です。

編集: AsyncTask を定義するとします:

  • doInBackground は Class3 オブジェクトを返し、Class1 オブジェクトの配列 (Class1... として定義) を引数として受け取る必要があります。
  • onProgressUpdate は、引数として Class2 オブジェクト (Class2... として定義) の配列を取る必要があります。
  • onPostExecute は Class3 オブジェクトを引数として取る必要があります
  • ...

詳細については、Android のドキュメントを参照してください: http://developer.android.com/reference/android/os/AsyncTask.html

于 2012-07-28T21:15:40.653 に答える
1

onPostExecute で runOnUiThread(mRunnable) メソッドを使用します。UI に変更を加えたい場合は、すべてを runOnUiThread に変更します。

于 2012-07-30T11:29:53.940 に答える