在android中的“活动开始”选项卡上发送服务器请求?

在android中的“活动开始”选项卡上发送服务器请求?,android,Android,我有一个MainActivity,它添加了两个选项卡,即“A”,“B”两个选项卡向服务器发送一些请求选项卡“A”是一个片段,选项卡“B”也是一个片段,问题是当MainActivity启动两个选项卡发送服务器请求时,默认情况下用户可以看到选项卡1,但当选项卡2可见时,我想要的是选项卡2向服务器发送请求。请帮助我 主要活动代码:- m_TabLayout = (TabLayout) findViewById(R.id.tab_layout);// finding Id of tablayou

我有一个MainActivity,它添加了两个选项卡,即“A”,“B”两个选项卡向服务器发送一些请求选项卡“A”是一个片段,选项卡“B”也是一个片段,问题是当MainActivity启动两个选项卡发送服务器请求时,默认情况下用户可以看到选项卡1,但当选项卡2可见时,我想要的是选项卡2向服务器发送请求。请帮助我

主要活动代码:-

    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) {

        }
    });
表2代码:-

    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);
}
private View m_Main;
私有字符串m_szMobileNumber,m_szEncryptedPassword;
专用存储m_项目;
私有静态ListView m_ListView;//正在声明Listview变量。。
私有字符串标记=CAdscendMediaDeal.class.getSimpleName();
整数pubId=105639;
整数aswallId=6453;
私有数组列表s_oDataset;//声明Arraylist变量
私人CadscendeAdapter m_oAdapter;
@可空
@凌驾
创建视图时的公共视图(LayoutFlater充气机、@Nullable ViewGroup容器、@Nullable Bundle savedInstanceState){
m_Main=充气机。充气(R.layout.adscen\u交易清单,容器,假);
getDetail();
init();
返回m_Main;
}
私有void getDetail(){
CLoginSessionManagement m_oSessionManagement=new CLoginSessionManagement(getActivity());//登录会话的装箱对象
HashMap user=m_oSessionManagement.getLoginDetails();//从登录会话获取字符串
m_szMobileNumber=user.get(CLoginSessionManagement.s_szKEY_MOBILE).trim();//从保存的首选项获取密码。。。。。。。。。。
}
公共void init(){
m_ListView=(ListView)m_Main.findViewById(R.id.dealList);
s_oDataset=newarraylist();
m_ListView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
试一试{
字符串url=s_oDataset.get(position.getM_Link();
如果(!url.startsWith(“http://”)&&!url.startsWith(“https://”))
url=“http://”+url;
Intent myIntent=newintent(Intent.ACTION_视图,Uri.parse(url));
星触觉(myIntent);
}捕获(ActivityNotFounde异常){
Toast.makeText(getActivity(),“任何应用程序都无法处理此请求。”
+“请安装webbrowser”,Toast.LENGTH_LONG.show();
e、 printStackTrace();
}
}
});
}
@凌驾
恢复时公开作废(){
super.onResume();
getAdscendDeal();
}
public void getAdscendDeal(){
字符串url=”http://adsc.com/adwall/api/publisher/“+pubId+”/profile/“+aswallId+”/offers.json?subid1=“+m_szMobileNumber;
JSONObject JSONObject=新的JSONObject();
JsonObjectRequest JsonObjectRequest=新的JsonObjectRequest(Request.Method.GET,url,jsonObject,new Response.Listener()){
@凌驾
公共void onResponse(JSONObject响应){
Log.e(标记“服务器响应::”+响应);
试一试{
JSONArray post=response.optJSONArray(“报价”);
for(int i=0;i
设置viewpager适配器时,也将调用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
    }
}

}

查看寻呼机在两侧保留一些页面,以便在滑动页面上显示而无需加载。默认情况下,ViewPager的偏移限制为0

setOffscreenPageLimit(整数限制): 设置在空闲状态下视图层次结构中当前页面两侧应保留的页数

但是设置viewpager.setOffscreenPageLimit(0)将不起作用

警告:
请求的屏幕外页面限制0太小;默认为1
尝试使用此 所以,用户应该这样做

 public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    if (isVisibleToUser) {
        // load data here
    }else{
       // fragment is no longer visible
    }
}