私のクラスの1つでAsyncTaskを使用していますが、onPostExecuteメソッドを使用してビューを更新できません。メインクラスでは、結果タブにタブを変更するActionBarを使用しています。クエリの結果はどこにリスト形式で表示されますか?私は安らかなサービスを使用していて、リストをサーバーから正常に取得しています。クエリの結果を表示するために、結果タブ(メインクラスにある)を更新しようとしています。これまでに成功していない、どんな助けも大変感謝します、ありがとう。AsyncTaskを使用していますが、onPostExecuteメソッドを使用してビューを更新できません。
PS。私はonPostExecuteメソッドを実行して結果タブに移動し、AsyncTaskクラスからmainのビューを更新できないだけでサーバからリストを取得します。また、私はonProgressUpdateメソッドも持っていることを言及する必要があります。 "私はログ猫に文字列を出力して、それが呼び出されていることを確認しています"。 doInBackgroundメソッドも正常に動作し、ビューを正しく更新できません。また、私は別のクラスからmainを更新しているので、リストビューとアダプタを静的にしたので、asyncTaskクラスから呼び出すことができます。これは私の考えでは理にかなっていますが、これは間違っているかもしれません。 onPostExecuteメソッドを使用します。ありがとう。
メインクラスのOnCreateメソッド:メインクラスで
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
bar = getActionBar();
bar.addTab(bar.newTab().setText("Basic\nSearch").setTabListener(this));
bar.addTab(bar.newTab().setText("Advanced\nSearch").setTabListener(this));
bar.addTab(bar.newTab().setText("Results").setTabListener(this));
//bar.addTab(bar.newTab().setText("Exit").setTabListener(this));
bar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_USE_LOGO);
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
bar.setDisplayShowHomeEnabled(true);
// remove the activity title to make space for tabs
bar.setDisplayShowTitleEnabled(false);
bar.setDisplayUseLogoEnabled(false);
}
法の結果]タブと[クエリサーバーにタブを変更します。
public void basicSubmitButton(View view) throws InterruptedException {
String query = myBasicEditText.getText().toString();
bar.setSelectedNavigationItem(2);
ReadWebpageAsyncTask basicSubmission = new ReadWebpageAsyncTask();
basicSubmission.query(query);
}
asyncTask方法のonCreate:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.results);
}
onPostExecute方法を:
protected void onPostExecute(String result) {
Hummedia.myListView = (ListView) findViewById (R.id.lv);
Hummedia.myListView.setTextFilterEnabled(true);
Hummedia.myListView.clearChoices();
Hummedia.adapter = new ArrayAdapter<String>(ReadWebpageAsyncTask.this,
android.R.layout.simple_list_item_1,
mediaList);
//wait();
Hummedia.myListView.setAdapter(Hummedia.adapter);
}
、ここでそれがonPostExecuteメソッドを介して主にビューを更新しようとしたときにスタックトレース出力です:
12-26 18:21:48.916: D/AndroidRuntime(536): Shutting down VM
12-26 18:21:48.916: W/dalvikvm(536): threadid=1: thread exiting with uncaught exception (group=0x409951f8)
12-26 18:21:49.067: E/AndroidRuntime(536): FATAL EXCEPTION: main
12-26 18:21:49.067: E/AndroidRuntime(536): java.lang.NullPointerException
12-26 18:21:49.067: E/AndroidRuntime(536): at android.app.Activity.findViewById(Activity.java:1794)
12-26 18:21:49.067: E/AndroidRuntime(536): at edu.byu.hummedia.ReadWebpageAsyncTask$DownloadWebPageTask.onPostExecute(ReadWebpageAsyncTask.java:132)
12-26 18:21:49.067: E/AndroidRuntime(536): at edu.byu.hummedia.ReadWebpageAsyncTask$DownloadWebPageTask.onPostExecute(ReadWebpageAsyncTask.java:1)
12-26 18:21:49.067: E/AndroidRuntime(536): at android.os.AsyncTask.finish(AsyncTask.java:602)
12-26 18:21:49.067: E/AndroidRuntime(536): at android.os.AsyncTask.access$600(AsyncTask.java:156)
12-26 18:21:49.067: E/AndroidRuntime(536): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:615)
12-26 18:21:49.067: E/AndroidRuntime(536): at android.os.Handler.dispatchMessage(Handler.java:99)
12-26 18:21:49.067: E/AndroidRuntime(536): at android.os.Looper.loop(Looper.java:137)
12-26 18:21:49.067: E/AndroidRuntime(536): at android.app.ActivityThread.main(ActivityThread.java:4340)
12-26 18:21:49.067: E/AndroidRuntime(536): at java.lang.reflect.Method.invokeNative(Native Method)
12-26 18:21:49.067: E/AndroidRuntime(536): at java.lang.reflect.Method.invoke(Method.java:511)
12-26 18:21:49.067: E/AndroidRuntime(536): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
12-26 18:21:49.067: E/AndroidRuntime(536): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
12-26 18:21:49.067: E/AndroidRuntime(536): at dalvik.system.NativeStart.main(Native Method)