使用onPostExecute设置全局数组值时出现问题

时间:2014-10-10 21:59:09

标签: java android android-asynctask

我正在尝试使用String[] placesSuggestion;

onPostExecute设置全局定义的AsyncTask<String, String, String[]>

onPostExecute方法如下所示:

@Override
    protected void onPostExecute(String[] suggestionArray){
        //Log.d("suggestionArray", Arrays.toString(suggestionArray));
        super.onPostExecute(suggestionArray);
        fillPlacesSuggestion(suggestionArray);
        Log.d("suggestionArray", Arrays.toString(suggestionArray));
    }

fillPlacesSuggestion函数如下所示:

public void fillPlacesSuggestion(String[] suggestionArray){
    placesSuggestion = suggestionArray;
}

onCreate方法如下所示:

 super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    sourceET = (EditText) findViewById(R.id.sourceEditText);
    destinationET = (EditText) findViewById(R.id.destinationEditText);
    new MyAsyncTask().execute();
    Log.d("placesSuggestion", Arrays.toString(placesSuggestion));

suggestionArray日志给出了预期值,但placeSuggestion日志不是。

任何人都可以帮我解决这个问题,因为我对Android开发很陌生。

1 个答案:

答案 0 :(得分:1)

当您尝试记录此内容时:

Log.d("placesSuggestion", Arrays.toString(placesSuggestion));

任务尚未完成。如果你想为placesSuggestion

获得正确的值,请等待它
MyAsyncTask task = new MyAsyncTask();
task.execute();
if (task.get() != null) // waiting for it
{
    Log.d("placesSuggestion", Arrays.toString(placesSuggestion));
}