在我的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的结果。