我想通過AsyncTask更改我的Activity的佈局。不能從AsyncTask中使用setContentView
在onPostExecute()我打電話:
MyActivity.this.setContentView(R.layout.activity_sub);
,但它不會讓我,說: 「MyActivity不是一個封閉類」。
任何人都可以請幫忙嗎?
我想通過AsyncTask更改我的Activity的佈局。不能從AsyncTask中使用setContentView
在onPostExecute()我打電話:
MyActivity.this.setContentView(R.layout.activity_sub);
,但它不會讓我,說: 「MyActivity不是一個封閉類」。
任何人都可以請幫忙嗎?
不應該需要'MyActivity.this。';下面適用於我:
public class MyAsyncTask extends AsyncTask<Void, Void, Integer> {
@Override
protected Integer doInBackground(Void... params) {
return R.layout.activity_home;
}
@Override
protected void onPostExecute(Integer result) {
super.onPostExecute(result);
setContentView(result);
}
}
我認爲這是一個錯誤的方式來改變活動中的佈局。如果你想顯示另一個佈局的屏幕,你應該使用片段或創建另一個活動,並設置你的佈局。
如果您將AsyncTask
類嵌入爲活動的內部類,它應該可以工作。
public class MyActivity extends Activity {
...
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
...
public class MyAsyncTask extends AsyncTask<Void, Void, ...> {
@Override
protected ... doInBackground(Void... params) {
...
}
@Override
protected void onPostExecute(... result) {
super.onPostExecute(result);
setContentView(R.layout.activity_sub);
}
}
}
你在哪裏打電話和實施AsynkTask?您可以將AsyncTask作爲回調的活動,然後調用setContentView()。 –
也許這可以幫助你:http://stackoverflow.com/questions/14116415/mainactivity-this-is-not-an-enclosing-class-asynctask – Prexx
它應該工作,如果你嵌入AsyncTask類作爲內部類的活動。 –