问题描述
我不确定为什么,但是我的movie.getId()getter却为null。在jsonrequest方法中为该方法提供一个值,但是当我尝试使用它时返回null。任何帮助将不胜感激。
Movies movies = new Movies();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
firstMovie = new ArrayList<>();
recyclerView = findViewById(R.id.recyclerViewId);
jsonrequest();
jsonrequest2();
}
我将数据输入设置器的方法
public void jsonrequest() {
request = new JsonObjectRequest(JSON_URL,null,new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
JSONObject obj = null;
try {
obj = new JSONObject(response.toString());
} catch (JSONException e) {
e.printstacktrace();
}
JSONArray results = null;
try {
results = obj.getJSONArray("results");
} catch (JSONException e) {
e.printstacktrace();
}
for (int i = 0; i < results.length(); i++) {
movies = new Movies();
JSONObject info = null;
try {
info = results.getJSONObject(i);
} catch (JSONException e) {
e.printstacktrace();
}
try {
movies.setId(info.getString("id"));
movies.setTitle(info.getString("title"));
movies.setRelease_date(info.getString("release_date"));
movies.setoverview(info.getString("overview"));
movies.setPoster_path("https://image.tmdb.org/t/p/w500" + info.getString("poster_path"));
movies.setBackdrop_path("https://image.tmdb.org/t/p/w500" + info.getString("backdrop_path"));
}
在此URL中,movies.getId()返回null,但我无法弄清楚。
private final String JSON_URL2 = "https://api.themoviedb.org/3/movie/" + movies.getId() + "/videos?api_key=";
解决方法
扩大我的评论:您没有共享Movies
的代码,但我假设最初的id
属性是null
。
现在看看您的第一个片段:
Movies movies = new Movies();
@Override
protected void onCreate(Bundle savedInstanceState) { ... }
这表明movies
是一个实例变量。
现在看看private final String JSON_URL2 = "https://api.themoviedb.org/3/movie/" + movies.getId() + "/videos?api_key=";
。
再次JSON_URL2
是一个实例变量,两者都在创建对象时初始化。
同样,假设两个语句之间没有其他相关的初始化代码movies
仍将处于初始状态,即id
属性仍为null
,因此getId()
返回{{ 1}}。
稍后调用null
时,只会影响setId(...)
,但已经计算出movies
的值(由于JSON_URL2
的值无法更改,不再)。
因此,您需要做的是在尝试使用final
之前添加movies.getId()
(假设此时JSON_URL2
的设置正确),例如通过使用和替换占位符。
示例:
id