Aktualizacja TextView z Async Task, który używa niestandardowego okna programu
W jednej z moich aplikacji mam scenariusz, w którym muszę wykonać pewne zadanie w tle. W tym celu używam Async Task. Używam również niestandardowego okna postępu. Poniżej znajduje się układ niestandardowego okna dialogowego postępu
<code><?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/layout_root" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center_vertical|center_horizontal" android:orientation="vertical" > <ProgressBar android:layout_width="60dp" android:layout_height="60dp" android:indeterminateDrawable="@drawable/progressloader" android:layout_gravity="center"/> <TextView android:id="@+id/progressMessage" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/black" android:textSize="18sp" android:text="Please wait...." /> </LinearLayout> </code>
Wszystko działa dobrze, ale kiedy próbuję ustawić tekst na TextView, otrzymuję java NullPointerException.
Kod AsyncTask
<code>private class InitialSetup extends AsyncTask<String, Integer, Long> { ProgressDialog dialog = new ProgressDialog(getParent(),R.style.progressdialog); @Override protected void onPreExecute() { dialog.show(); dialog.setContentView(R.layout.progressbar); } @Override protected Long doInBackground(String... urls) { // txtView.setText("Testing"); here I am getting the error fetchDetails(); return 0; } @Override protected void onPostExecute(Long result) { if (this.dialog.isShowing()) { this.dialog.dismiss(); } populateUI(getApplicationContext()); } } </code>
Główna aktywność
<code>public class SummaryActivity extends Activity { final TextView txtView = (TextView)findbyid(R.id.progressMessage); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.accountsummary); new InitialSetup().execute(""); } } </code>