在我的Android应用中,我需要在应用的两个不同位置使用一些字符串。因此,我编写了一个类,可以从中获取这些字符串。当我尝试从返回字符串数组的类中调用return方法时,应用程序崩溃,出现java.lang.NullPointerException。这是带有return方法的类:

public class MetaDataFetcher {

    String[] metaData;

    public String[] getMetaData() {
        //Gets the metadata strings from HarvasterAsync
        try {
            metaData = new HarvesterAsync().execute("urlhere").get();



        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e) {
            e.printStackTrace();
        }
        return metaData;
    }
}

我试图像这样检索字符串数组:
public void updateMetaData(){
//Gets the metadata strings from MetaDataFetcher

String[] receivedMetaData = metaDataFetcher.getMetaData();

//More code below...

NullPointerException发生在String[] receivedMetaData = metaDataFetcher.getMetaData();行。

我究竟做错了什么?

编辑:

我用MetaDataFetcher类中onCreate方法上方的MetaDataFetcher metaDataFetcher;行初始化MainActivity类。

HarvesterAsync是AsyncTask。您可以看到它here

最佳答案

问题是并发。 AsyncTask是非阻塞的。所以基本上这

String[] receivedMetaData = metaDataFetcher.getMetaData();

会立即从MetaDataFetcher的字段中返回receiveMetaData,而不是HarvesterAsync的结果。

10-01 13:49