Я использую AsyncTask на одном из моих классов, но не могу обновить представление с помощью метода onPostExecute.В основном классе я использую ActionBar, меняя вкладки на вкладку результатов.где результаты запроса будут отображаться в виде списка.Я использую сервис restful и успешно получаю список обратно с сервера.Я пытаюсь обновить вкладку результатов (находится в основном классе), чтобы показать результаты запроса.пока не удалось, любая помощь будет принята с благодарностью, спасибо.
PS.Я получаю метод onPostExecute, запущенный после перехода на вкладку результатов и получения списка с сервера, но я не могу обновить представление в main из класса AsyncTask.Я также должен упомянуть, что у меня также есть метод onProgressUpdate «Я просто вывожу строку в журнал cat, чтобы убедиться, что она вызывается».а также метод 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)