私の活動では、すべてのタブがダイナミックとして作成されています。スワイプする各jsonデータが呼び出されます。ボレーエラーは、多数のスワイプの後に発生します。この後、フラグメントや他のページのデータは利用できません。これは私のコードフラグメント/ビューページ間のスワイプ中にバレーエラーが発生しました
fragmentParent.addPage(jsonObject.getString("name"),jsonObject.getString("cat_id"),shop_id);
public class FragmentParent extends Fragment {
private TabLayout tabLayout;
private ViewPager viewPager;
private ViewPagerAdapter1 adapter;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_parent, container, false);
getIDs(view);
setEvents();
return view;
}
private void getIDs(View view) {
viewPager = (ViewPager) view.findViewById(R.id.my_viewpager);
tabLayout = (TabLayout) view.findViewById(R.id.my_tab_layout);
adapter = new ViewPagerAdapter1(getFragmentManager(), getActivity(), viewPager, tabLayout);
viewPager.setAdapter(adapter);
}
int selectedTabPosition;
private void setEvents() {
tabLayout.setOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(viewPager) {
@Override
public void onTabSelected(TabLayout.Tab tab) {
super.onTabSelected(tab);
viewPager.setCurrentItem(tab.getPosition());
selectedTabPosition = viewPager.getCurrentItem();
Log.d("Selected", "Selected " + tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
super.onTabUnselected(tab);
Log.d("Unselected", "Unselected " + tab.getPosition());
}
});
}
public void addPage(String pagename, String id,String shop_id) {
Bundle bundle = new Bundle();
bundle.putString("data", id);
bundle.putString("shop_id", shop_id);
FragmentChild fragmentChild = new FragmentChild();
fragmentChild.setArguments(bundle);
adapter.addFrag(fragmentChild, pagename);
adapter.notifyDataSetChanged();
if (adapter.getCount() > 0) tabLayout.setupWithViewPager(viewPager);
viewPager.setCurrentItem(adapter.getCount() - 1);
setupTabLayout();
}
public void setupTabLayout() {
selectedTabPosition = viewPager.getCurrentItem();
for (int i = 0; i < tabLayout.getTabCount(); i++) {
tabLayout.getTabAt(i).setCustomView(adapter.getTabView(i));
}
}
}
public class FragmentChild extends Fragment {
String childname,shoppe_id;
RecyclerView imgflag;
CategoryItemAdapter categoryItemAdapter;
HttpStack stack;
List<ShopDetails> cat_item_list;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_child, container, false);
Bundle bundle = getArguments();
childname = bundle.getString("data");
shoppe_id=bundle.getString("shop_id");
stack = new HurlStack();
imgflag=(RecyclerView)view.findViewById(R.id.imgflag);
cat_item_list = new ArrayList<ShopDetails>();
categoryItemAdapter = new CategoryItemAdapter(getActivity(),cat_item_list);
GridLayoutManager layoutManager
= new GridLayoutManager(getActivity(),1, GridLayoutManager.VERTICAL,false);
imgflag.setLayoutManager(layoutManager);
imgflag.setAdapter(categoryItemAdapter);
getCategoryItem(childname);
return view;
}
public void getCategoryItem(String cat_id)
{
stack = new HurlStack(null, createSslSocketFactory());
final RequestQueue requestQueue = Volley.newRequestQueue(getActivity(),stack);
String url=config.api_url+"view_cat_item.php?cat_id="+cat_id;
StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
if(response.equals("0 results"))
{
}
else
{
try {
JSONArray jsonArray=new JSONArray(response);
for(int i=0;i<jsonArray.length();i++)
{
JSONObject jsonObject=jsonArray.getJSONObject(i);
ShopDetails shopDetails=new ShopDetails();
shopDetails.setItem_name(jsonObject.getString("item_name"));
shopDetails.setItem_image(jsonObject.getString("image"));
shopDetails.setItem_price(jsonObject.getString("price"));
shopDetails.setItem_desc(jsonObject.getString("ingredients"));
cat_item_list.add(shopDetails);
}
if(cat_item_list!=null)
{
categoryItemAdapter.notifyDataSetChanged();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getActivity(), "Unable to connect. Please check your connection.", Toast.LENGTH_SHORT).show();
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
params.put("shoppe_id", shoppe_id);
return params;
}
};
stringRequest.setRetryPolicy(new DefaultRetryPolicy(
60000,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
stringRequest.setShouldCache(false);
requestQueue.add(stringRequest);
}
private static SSLSocketFactory createSslSocketFactory() {
TrustManager[] byPassTrustManagers = new TrustManager[]{new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}
public void checkClientTrusted(X509Certificate[] chain, String authType) {
}
public void checkServerTrusted(X509Certificate[] chain, String authType) {
}
}};
SSLContext sslContext = null;
SSLSocketFactory sslSocketFactory = null;
try {
sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, byPassTrustManagers, new SecureRandom());
sslSocketFactory = sslContext.getSocketFactory();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
Log.e(TAG, StringUtils.EMPTY, e);
} catch (KeyManagementException e) {
Log.e(TAG, StringUtils.EMPTY, e);
}
return sslSocketFactory;
}
public final boolean isInternetOn() {
ConnectivityManager connec = (ConnectivityManager) getActivity().getSystemService(getActivity().getBaseContext().CONNECTIVITY_SERVICE);
if (connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTED ||
connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTING ||
connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTING ||
connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTED) {
return true;
} else if (
connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.DISCONNECTED ||
connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.DISCONNECTED) {
return false;
}
return false;
}
}
すべての検証のようにタグを設定することができます方法)(onStop
をボレー要求を取り消すことができます。しかし、再び同じエラー –