java - 如何使用 AsyncTask 分配全局变量

标签 java android android-asynctask global-variables

这里我给出了一个关于全局变量和 AsyncTasks 所面临问题的小例子。我从文件中读取数据并将该数据分配给一个字符串,然后在 onPostExecute() 方法中将该字符串分配给全局变量。但是,当我为 TextView 分配“aString”变量时,输出仍然是“无”。

我知道,如果您在 onPostExecute() 方法中进行 TextView 分配,它会起作用,但是如果我想在 AsyncTask 之外的方法中使用数据该怎么办。

有人可以帮忙解决这个问题吗,我想我没有得到什么?

public class GoodAsync extends Activity{

    TextView tv;
    String aString = "nothing";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.asynctasks);

        new AsyncTasker().execute();

        tv = (TextView) findViewById(R.id.async_view);
        tv.setText(aString);

    }

    private class AsyncTasker extends AsyncTask<String, Integer, String>{

        @Override
        protected String doInBackground(String... arg0) {

            AssetManager am = GoodAsync.this.getAssets();
            String string = "";
            try {
                // Code that reads a file and stores it in the string variable

                return string;

            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
            aString = result;
        }   

    }
}

最佳答案

也许你想这样做:

public class GoodAsync extends Activity{

TextView tv;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.asynctasks);
    tv = (TextView) findViewById(R.id.async_view);
    new AsyncTasker().execute();
}

    public void setTextView (String text) {
       tv.setText(text);
    }

    private class AsyncTasker extends AsyncTask<String, Integer, String>{

        ....

        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
            setTextView(result);
        }   

    }
}

关于java - 如何使用 AsyncTask 分配全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20594518/

相关文章:

java - 如何限制未登录用户访问某些页面? (JSF 2.0)

java - 当键集大小为 0 时,选择器的默认行为是什么?

android - 如何从 AsyncTask 抛出异常并在外部处理

android - 在回调中使用正确的上下文

java - 为什么Java中哈希表(Hashtable)中的 't'不是大写

java - 分层HashMap N阶HMM实现

安卓 : IllegalArgumentException: "Component class X does not exist" in API 17 (no crash in API 8)

android - 如何使用约束布局拆分两种背景颜色?

android - Android 4.0 中日历的位置是什么?

android - android中的异步任务不起作用