无法使用AsyncTask中的setContentView

时间:2015-10-01 11:50:00

标签: android android-asynctask setcontentview

我正在尝试通过AsyncTask更改Activity的布局。

在onPostExecute()中我正在调用:

select * from tablename
where col1 in (
    select col1 from
    tablename
    group by col1
    having count(distinct col2) >= 2)

但它不会让我说,“MyActivity不是一个封闭的阶级”。

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:0)

不应该需要'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);
    }
}

答案 1 :(得分:0)

我认为这是在rutime中更改活动布局的错误方法。如果您想要显示另一个布局的屏幕,您应该使用片段或创建另一个活动并在那里设置您的布局。

答案 2 :(得分:0)

如果您将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);
        }
    }

}