2016-07-26 3 views
1

MainActivityは2つのタブ、すなわち "A"、 "B"を両方のタブに追加します。 "A"はフラグメントで、タブ "B"はフラグメントです。サーバーのリクエストは、デフォルトではtab1はユーザーに表示されますが、タブ2が表示されてからタブ2がserver.plsにリクエストを送信するときに必要なものです。はアンドロイドでサーバーリクエストを送信しますか?

mainactivityコード: -

m_TabLayout = (TabLayout) findViewById(R.id.tab_layout);// finding Id of tablayout 
    m_ViewPager = (ViewPager) findViewById(R.id.pager);//finding Id of ViewPager 
    m_TabLayout.addTab(m_TabLayout.newTab().setText("Deals"));// add deal listin tab 
    m_TabLayout.addTab(m_TabLayout.newTab().setText("Stories")); 
    m_TabLayout.setTabGravity(TabLayout.GRAVITY_FILL);// setting Gravity of Tab 


    CDealMainListingPager m_oDealMainScreenPager = new CDealMainListingPager(getSupportFragmentManager(), m_TabLayout.getTabCount()); 
    m_ViewPager.setAdapter(m_oDealMainScreenPager);// adiing adapter to ViewPager 
    m_ViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(m_TabLayout));// performing action of page changing 
    m_TabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
     @Override 
     public void onTabSelected(TabLayout.Tab tab) { 
      m_ViewPager.setCurrentItem(tab.getPosition()); 
     } 

     @Override 
     public void onTabUnselected(TabLayout.Tab tab) { 

     } 

     @Override 
     public void onTabReselected(TabLayout.Tab tab) { 

     } 
    }); 

TAB2コード: - あなたはviewpagerアダプタを設定すると

private View m_Main; 

private String m_szMobileNumber, m_szEncryptedPassword; 
private CAdscenMediaDealStorage m_Item; 
private static ListView m_ListView;// declaring Listview variable.. 
private String TAG = CAdscendMediaDeal.class.getSimpleName(); 
Integer pubId = 105639; 
Integer aswallId = 6453; 
private ArrayList<CAdscenMediaDealStorage> s_oDataset;// declaring Arraylist variable 
private CADscendDealAdapter m_oAdapter; 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    m_Main = inflater.inflate(R.layout.adscend_deal_list, container, false); 
    getDetail(); 
    init(); 

    return m_Main; 

} 

private void getDetail() { 
    CLoginSessionManagement m_oSessionManagement = new CLoginSessionManagement(getActivity());// crating object of Login Session 
    HashMap<String, String> user = m_oSessionManagement.getLoginDetails();// get String from Login Session 
    m_szMobileNumber = user.get(CLoginSessionManagement.s_szKEY_MOBILE).trim();// getting password from saved preferences.......... 


} 

public void init() { 
    m_ListView = (ListView) m_Main.findViewById(R.id.dealList); 
    s_oDataset = new ArrayList<>(); 
    m_ListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      try { 
       String url = s_oDataset.get(position).getM_Link(); 
       if (!url.startsWith("http://") && !url.startsWith("https://")) 
        url = "http://" + url; 
       Intent myIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
       startActivity(myIntent); 

      } catch (ActivityNotFoundException e) { 
       Toast.makeText(getActivity(), "No application can handle this request." 
         + " Please install a webbrowser", Toast.LENGTH_LONG).show(); 
       e.printStackTrace(); 
      } 
     } 
    }); 
} 

@Override 
public void onResume() { 
    super.onResume(); 
    getAdscendDeal(); 
} 

public void getAdscendDeal() { 
    String url = "http://adsc.com/adwall/api/publisher/" + pubId + "/profile/" + aswallId + "/offers.json?subid1=" + m_szMobileNumber; 

    JSONObject jsonObject = new JSONObject(); 
    JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, url, jsonObject, new Response.Listener<JSONObject>() { 
     @Override 
     public void onResponse(JSONObject response) { 
      Log.e(TAG, "Server Response::" + response); 
      try { 
       JSONArray post = response.optJSONArray("offers"); 
       for (int i = 0; i < post.length(); i++) { 

        JSONObject obj = post.getJSONObject(i); 
        m_Item = new CAdscenMediaDealStorage(); 
        m_Item.setM_szHeaderText(obj.getString("name")); 
        m_Item.setM_szsubHeaderText(obj.getString("description")); 
        m_Item.setM_szDealValue(obj.getString("currency_count")); 
        m_Item.setM_szImageView(obj.getString("creative_url")); 
        m_Item.setM_Link(obj.getString("click_url")); 
        s_oDataset.add(m_Item); 

       } 
       if (!s_oDataset.isEmpty()) { 
        m_oAdapter = new CADscendDealAdapter(getActivity(), s_oDataset);// create adapter object and add arraylist to adapter 
        m_ListView.setAdapter(m_oAdapter);//adding adapter to recyclerview 
       } 


      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 

     } 
    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      Log.e(TAG, "Server Error::" + error); 
     } 
    }); 
    RequestQueue requestQueue = Volley.newRequestQueue(getActivity()); 
    requestQueue.add(jsonObjectRequest); 
} 

答えて

2

、TAB2のonCreateViewも呼ばれます。したがって、要求を送信します。

オーバーライドフラグメント方法:ページをスライドするローディングなしで示す上setUserVisibleHint

public class MyFragment extends Fragment { 
@Override 
public void setUserVisibleHint(boolean isVisibleToUser) { 
    super.setUserVisibleHint(isVisibleToUser); 
    if (isVisibleToUser) { 
     // Fragment is visible 
     // make request here 
    } 
    else { 
    // Fragment is not visible 
    } 
} 

}

+0

おかげmadhuri ....その作業ユーザーにRequested offscreen page limit 0 too small; defaulting to 1 試してみます – Siddharth

0

表示ページャは、その結果をいくつかのページのいずれかの側を保持します。 ViewPagerのオフセット制限がデフォルト0

setOffscreenPageLimit(int型の制限)である: アイドル状態でビュー階層における現在のページのいずれかの側に保持すべきページ数を設定します。

しかしviewpager.setOffscreenPageLimit(0)動作しません設定

警告:この だから、ユーザーこの

public void setUserVisibleHint(boolean isVisibleToUser) { 
    super.setUserVisibleHint(isVisibleToUser); 
    if (isVisibleToUser) { 
     // load data here 
    }else{ 
     // fragment is no longer visible 
    } 
} 
関連する問題