【发布时间】:2017-11-23 02:34:16
【问题描述】:
我正在从我的片段进行 API 调用并使用 volley 获取响应。每次单击该片段选项卡时,都会再次进行 API 调用。我希望 API 调用只发生一次。有什么办法可以做到这一点?我尝试寻找解决方案,但没有找到任何有用的东西。下面是我的片段代码。
public class Tab3News extends Fragment {
private RecyclerView newsView;
private NewsAdapter newsadapter;
String myxmlResponse;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Log.d("Making request again","hello");
View layout = inflater.inflate(R.layout.tab3news, container, false);
newsView = (RecyclerView) layout.findViewById(R.id.newstable);
String symPassed = ((SendString)getActivity()).message;
String XmlURL = "http://demoapplication-env.us-east-2.elasticbeanstalk.com/?symbol="+symPassed+"&indicator=XML";
RequestQueue queue = Volley.newRequestQueue(getActivity().getApplicationContext());
StringRequest req = new StringRequest(Request.Method.GET, XmlURL,
new Response.Listener<String>()
{
@Override
public void onResponse(String response) {
try {
//processData(response);
myxmlResponse = response;
newsView.setHasFixedSize(true);
//newsView.setItemAnimator(new DefaultItemAnimator());
newsView.setLayoutManager(new LinearLayoutManager(getActivity()));
newsView.addItemDecoration(new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL_LIST));
newsadapter = new NewsAdapter(getActivity(),getData());
newsView.setAdapter(newsadapter);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (XmlPullParserException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener()
{
@Override
public void onErrorResponse(VolleyError error) {
// handle error response
}
}
);
queue.add(req);
return layout;
}
}
【问题讨论】:
-
在 Preference 中保留一个布尔值,并在每次单击此片段时检查其值。
-
好吧..没有完全明白你所说的。对安卓来说是全新的。事实上,这是我的第一个安卓应用。你能详细说明一下吗?谢谢!!
-
我试图在下面的回答中进行解释,希望对您有所帮助。必须还有其他方法可以做到这一点,但目前我只能想到这个答案,如果这个答案对你有帮助,请接受它。
标签: android android-fragments fragment android-volley