Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
UDACITY Sunshine Android应用程序错误-java.io.FileNotFoundException_Java_Android_Json - Fatal编程技术网

UDACITY Sunshine Android应用程序错误-java.io.FileNotFoundException

UDACITY Sunshine Android应用程序错误-java.io.FileNotFoundException,java,android,json,Java,Android,Json,我是Android开发的初学者,我一直在关注SUNSHINE应用程序。直到今天,我运行应用程序并发现一个错误:java.io.FileNotFoundException: 我做了研究,OpenWeatherMapAPI现在似乎需要一个api密钥。 作为一名初学者,我不知道如何在我当前的应用程序中实现这一点,以便继续我的课程。我只是因为这一点而陷入困境。我非常感谢通过/帮助克服这一问题的任何工作:(谢谢) 这是我的ForecastFragment.java: package com.exampl

我是Android开发的初学者,我一直在关注SUNSHINE应用程序。直到今天,我运行应用程序并发现一个错误:java.io.FileNotFoundException:

我做了研究,OpenWeatherMapAPI现在似乎需要一个api密钥。 作为一名初学者,我不知道如何在我当前的应用程序中实现这一点,以便继续我的课程。我只是因为这一点而陷入困境。我非常感谢通过/帮助克服这一问题的任何工作:(谢谢)

这是我的ForecastFragment.java

package com.example.android.sunshine.app;
导入android.net.Uri;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.support.v4.app.Fragment;
导入android.util.Log;
导入android.view.LayoutInflater;
导入android.view.Menu;
导入android.view.MenuInflater;
导入android.view.MenuItem;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ArrayAdapter;
导入android.widget.ListView;
导入org.json.JSONArray;
导入org.json.JSONException;
导入org.json.JSONObject;
导入java.io.BufferedReader;
导入java.io.IOException;
导入java.io.InputStream;
导入java.io.InputStreamReader;
导入java.net.HttpURLConnection;
导入java.net.URL;
导入java.text.simpleDataFormat;
导入java.util.ArrayList;
导入java.util.array;
导入java.util.Date;
导入java.util.List;
/**
*包含简单视图的占位符片段。
*/
公共类ForecastFragment扩展了片段{
专用阵列适配器mForecastAdapter;
公众预报员(){
}
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
设置选项菜单(真);
}
@凌驾
创建选项菜单(菜单菜单,菜单充气机){
充气机。充气(右菜单。艏楼碎片,菜单);
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
int id=item.getItemId();
if(id==R.id.action\u刷新){
FetchWeatherTask weatherTask=新的FetchWeatherTask();
weatherTask.execute(“94043”);
返回true;
}
返回super.onOptionsItemSelected(项目);
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图根视图=充气机。充气(R.layout.fragment_main,容器,错误);
字符串[]数据={
“今天-晴朗-88/63”,
“Tommorow-Foggy-70/40”,
“周三-多云-72/63”,
“周四-小行星-75/65”,
“周五-暴雨-65/56”,
“Sat-困在风雨中的救援-60/51”,
“太阳-晴朗-80/68”
};
List-weekForecast=newarraylist(Arrays.asList(data));
mForecastAdapter=
新阵列适配器(
getActivity(),R.layout.list\u项目\u预测,
R.id.list\u item\u forecast\u textview,
周预测);
ListView ListView=(ListView)rootView.findViewById(
R.id.listView\u预测);
setAdapter(mForecastAdapter);
返回rootView;
}
公共类FetchWeatherTask扩展了AsyncTask{
私有最终字符串LOG_TAG=FetchWeatherTask.class.getSimpleName();
私有字符串getReadableDateString(长时间){
日期=新日期(时间*1000);
SimpleDateFormat=新的SimpleDateFormat(“E,MMM d”);
return format.format(date).toString();
}
专用字符串格式HighLows(双高、双低){
长轮高=数学轮(高);
长轮低=数学轮(低);
返回null;
}
私有字符串[]getWeatherDataFromJson(字符串forecastJsonStr,int numDays)
抛出JSONException{
最终字符串OWM_LIST=“LIST”;
最终字符串OWM_WEATHER=“WEATHER”;
最终字符串OWM_TEMPERATURE=“temp”;
最终字符串OWM_MAX=“MAX”;
最终字符串OWM_MIN=“MIN”;
最终字符串OWM_DATETIME=“dt”;
最终字符串OWM_DESCRIPTION=“main”;
JSONObject forecastJson=新的JSONObject(forecastJsonStr);
JSONArray weatherArray=forecastJson.getJSONArray(OWM_列表);
String[]resultStrs=新字符串[numDays];
对于(int i=0;ihttp://api.openweathermap.org/data/2.5/forecast/daily?q=94043&mode=json&units=metric&cnt=7&appid=[your_api_key]