我在这样的课程中有一个课程:

public class MainActivity extends ListActivity {

    ArrayList<HashMap<String, String>> arrayInfo;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.connection_beging);

        arrayInfo = new ArrayList<HashMap<String, String>>();

        ...

        button_connection.setOnClickListener(new View.OnClickListener(){
        public void onClick(View R){
                new GetInfoConnexion().execute();
                arrayInfo.get(0).get(TAG_FIRSTNAME); // Not working because arrayInfo is null
            }
        }
    }

    private class GetInfoConnexion extends AsyncTask<Void, Void, Void> {

         protected Void doInBackground(Void... arg0) {
              ...
              arrayInfo.add(info); //all datas are placed into arrayInfo.
              // This works perfectly.
              arrayInfo.get(0).get(TAG_FIRSTNAME); // example work !
         }
    }
}


如何检索放置在arrayInfo中的数据以供类MainActivity使用? (更准确地说,是在新的GetInfoConnexion()。execute();之后的onCLick()中)。

先感谢您。

最佳答案

啊,好的,我明白了你现在的要求。您不会在onClick中访问它。将一个名为onPostExecute的函数添加到您的AsyncTask中,然后将要使用的代码放在其中。您无法在onClick上执行此操作的原因是因为AsyncTask并行运行并且尚未完成。完成后将调用onPostExecute。

09-13 05:00