java-Tab片段每次更改Tab时都会获取数据

java-Tab片段每次更改Tab时都会获取数据,第1张

概述activity_profile.xml<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apkes/android"android:layout_width="match_parent"android:layout_height="match_pa

activity_profile.xml

<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"androID:layout_wIDth="match_parent"androID:layout_height="match_parent"androID:orIEntation="vertical"androID:paddingtop="?androID:attr/actionbarSize"androID:background="@drawable/stalker_background" ><ScrollVIEwandroID:layout_wIDth="match_parent"androID:layout_height="match_parent" ><linearLayoutandroID:layout_wIDth="match_parent"androID:layout_height="match_parent"androID:orIEntation="vertical" >            <androID.support.v4.vIEw.VIEwPager                androID:ID="@+ID/VPSlIDer"                androID:layout_wIDth="match_parent"                androID:layout_height="175dp"            />            <androID.support.v4.app.FragmentTabHost                androID:ID="@androID:ID/tabhost"                androID:layout_wIDth="match_parent"                androID:layout_height="match_parent" >                <linearLayout                androID:layout_wIDth="match_parent"                androID:layout_height="match_parent"                androID:orIEntation="vertical" >                    <TabWidget                    androID:ID="@androID:ID/tabs"                    androID:layout_wIDth="match_parent"                    androID:layout_height="wrap_content"                    androID:orIEntation="horizontal" />                    <FrameLayout                    androID:ID="@androID:ID/tabcontent"                    androID:layout_wIDth="match_parent"                    androID:layout_height="match_parent" />                </linearLayout>                </androID.support.v4.app.FragmentTabHost>            </linearLayout>            </ScrollVIEw></linearLayout>

ProfileActivity.java

package com.stalker.androIDapp;import java.util.ArrayList;import java.util.List;import java.util.concurrent.ExecutionException;import org.Json.JsONException;import org.Json.JsONObject;import androID.app.Actionbar;import androID.content.Intent;import androID.graphics.color;import androID.graphics.drawable.colorDrawable;import androID.os.AsyncTask;import androID.os.Bundle;import androID.support.v4.app.FragmentActivity;import androID.support.v4.app.FragmentManager;import androID.support.v4.app.FragmentTabHost;import androID.support.v4.app.FragmentTransaction;import androID.support.v4.vIEw.VIEwPager;import androID.text.HTML;import androID.util.Log;import androID.vIEw.Menu;import androID.vIEw.MenuInflater;import androID.vIEw.Window;import androID.Widget.TabHost.OnTabchangelistener;import androID.Widget.TextVIEw;import com.facebook.Session;import com.Google.gson.Gson;import com.stalker.adapters.VIEwPagerAdapter;import com.stalker.objects.HomeSlIDerClassForAdapter;import com.stalker.objects.likecategorySummaryResult;import com.stalker.objects.StoryResult;import com.stalker.objects.eStoryType;public class ProfileActivity extends FragmentActivity {AsyncTask<String, String, String> StoryResponse;public String storyResponseString;TextVIEw tv;public String UserID;String Username;String Accesstoken;VIEwPager VPSlIDer;public likecategorySummaryResult interestResult;FragmentTabHost mTabHost;StoryResult StorIEs = new StoryResult();@OverrIDeprotected voID onCreate(Bundle savedInstanceState) {    // Todo auto-generated method stub    super.onCreate(savedInstanceState);    setContentVIEw(R.layout.activity_profile);    VPSlIDer = (VIEwPager) findVIEwByID(R.ID.VPSlIDer);    // /////////////////////////    mTabHost = (FragmentTabHost) findVIEwByID(androID.R.ID.tabhost);    mTabHost.setup(this, getSupportFragmentManager(),            androID.R.ID.tabcontent);    mTabHost.addTab(            mTabHost.newTabSpec("tab1").setIndicator(                    getResources().getString(R.string.interest)),            InterestTabFragment.class, null);    mTabHost.addTab(            mTabHost.newTabSpec("tab2").setIndicator(                    getResources().getString(R.string.interaction)),            InteractionTabFragment.class, null);    mTabHost.addTab(            mTabHost.newTabSpec("tab3").setIndicator(                    getResources().getString(R.string.hangout)),            HangoutTabFragment.class, null);    mTabHost.setonTabChangedListener(new OnTabchangelistener() {        @OverrIDe        public voID onTabChanged(String tabID) {            // Todo auto-generated method stub            FragmentManager fragmentManager = getSupportFragmentManager();            InterestTabFragment tabOneFrgment = (InterestTabFragment) fragmentManager                    .findFragmentByTag("tab1");            InteractionTabFragment tabTwoFrgment = (InteractionTabFragment) fragmentManager                    .findFragmentByTag("tab2");            HangoutTabFragment tabThreeFrgment = (HangoutTabFragment) fragmentManager                    .findFragmentByTag("tab3");            FragmentTransaction fragmentTransaction = fragmentManager                    .beginTransaction();            if (tabID.equalsIgnoreCase("tab1")) {                if (tabOneFrgment != null) {                    if (tabTwoFrgment != null) {                        fragmentTransaction.hIDe(tabTwoFrgment);                    }                    if (tabThreeFrgment != null) {                        fragmentTransaction.hIDe(tabThreeFrgment);                    }                                           fragmentTransaction.show(tabOneFrgment);                }            } else if (tabID.equalsIgnoreCase("tab2")) {                if (tabTwoFrgment != null) {                    if (tabOneFrgment != null) {                        fragmentTransaction.hIDe(tabOneFrgment);                    }                    if (tabThreeFrgment != null) {                        fragmentTransaction.hIDe(tabThreeFrgment);                    }                    fragmentTransaction.show(tabTwoFrgment);                }            } else {                if (tabThreeFrgment != null) {                    if (tabOneFrgment != null) {                        fragmentTransaction.hIDe(tabOneFrgment);                    }                    if (tabTwoFrgment != null) {                        fragmentTransaction.hIDe(tabTwoFrgment);                    }                    fragmentTransaction.show(tabThreeFrgment);                }            }            fragmentTransaction.commit();        }    });    Session session = Session.getActiveSession();    if (session != null && session.isOpened()) {        // Get the user's data        Accesstoken = session.getAccesstoken();        makeStorIEsRequest(session);    }}@OverrIDepublic boolean onCreateOptionsMenu(Menu menu) {    MenuInflater inflater = getMenuInflater();    inflater.inflate(R.menu.stalker_profile_menu, menu);    return true;}private voID makeStorIEsRequest(final Session session) {    String URL = "http://..../";    JsONObject UserStory;    JsONObject ProfileStoryString = new JsONObject();    StoryResponse = new RequestTask().execute(URL);    try {        storyResponseString = StoryResponse.get();        UserStory = new JsONObject(storyResponseString);        ProfileStoryString = UserStory.getJsONObject("StoryResult");    } catch (InterruptedException e) {        // Todo auto-generated catch block        e.printstacktrace();    } catch (ExecutionException e) {        // Todo auto-generated catch block        e.printstacktrace();    } catch (JsONException e) {        // Todo auto-generated catch block        e.printstacktrace();    }    try {        Gson gson = new Gson();        try {            // j = new JsONObject(responseString);            StorIEs = gson.fromJson(ProfileStoryString.toString(),                    StoryResult.class);        } catch (Exception e) {            Log.i("my", e.getMessage());            e.printstacktrace();        }    } catch (Throwable t) {        Log.e("My App", "Could not parse malformed JsON: \""                + storyResponseString + "\"" + t.getMessage());    }    VIEwPagerAdapter adapter = new VIEwPagerAdapter(this, getSlIDer());    VPSlIDer.setAdapter(adapter);}@OverrIDeprotected voID onResumeFragments() {    super.onResumeFragments();}}

我有此片段活动,正在其中显示选项卡.我有三个标签.目前,我仅在InterestTabFragment.java中添加了代码

package com.stalker.androIDapp;import java.util.concurrent.ExecutionException;import org.Json.JsONException;import org.Json.JsONObject;import androID.os.AsyncTask;import androID.os.Bundle;import androID.support.v4.app.Fragment;import androID.util.Log;import androID.vIEw.LayoutInflater;import androID.vIEw.VIEw;import androID.vIEw.VIEwGroup;import com.devsmart.androID.ui.horizontallistVIEw;import com.facebook.Session;import com.Google.gson.Gson;import com.stalker.adapters.categoryLVAdapter;import com.stalker.objects.likecategorySummaryResult;public class InterestTabFragment extends Fragment{VIEw vIEw;String access_token;AsyncTask<String, String, String> FirstResponse;public String responseString;JsONObject joiningYear;horizontallistVIEw ListvIEw;@OverrIDepublic VIEw onCreateVIEw(LayoutInflater inflater, VIEwGroup container,        Bundle savedInstanceState) {    // Todo auto-generated method stub    super.onCreateVIEw(inflater, container, savedInstanceState);    vIEw = inflater.inflate(R.layout.interest_tab_fragment, container, false);    ListvIEw = (horizontallistVIEw) vIEw.findVIEwByID(R.ID.LVcategory);        Session session = Session.getActiveSession();        if (session != null && session.isOpened()) {            // Get the user's data            access_token = session.getAccesstoken();            makeInterestRequest(session);        }    return vIEw;}private voID makeInterestRequest(final Session session) {    access_token = session.getAccesstoken();    String URL =     "http://...";    JsONObject HomeCardString = new JsONObject();    FirstResponse = new RequestTask().execute(URL);    try {        responseString = FirstResponse.get();        joiningYear = new JsONObject(responseString);        HomeCardString = joiningYear.getJsONObject("likecategorySummaryResult");//          HomeCardString = TestAPIResult.getJsONObject("UserHomeResult");             } catch (InterruptedException e) {        // Todo auto-generated catch block        e.printstacktrace();    } catch (ExecutionException e) {        // Todo auto-generated catch block        e.printstacktrace();    } catch (JsONException e) {        // Todo auto-generated catch block        e.printstacktrace();    }    try {               Gson gson = new Gson();        try        {//              j = new JsONObject(responseString);            ((ProfileActivity)getActivity()).interestResult =     gson.fromJson(HomeCardString.toString(), likecategorySummaryResult.class);        }        catch(Exception e)        {            Log.i("myyyy", e.getMessage());            e.printstacktrace();        }    } catch (Throwable t) {        Log.e("My App", "Could not parse malformed JsON: \"" + responseString + "\"" +    t.getMessage());    }    categoryLVAdapter adapter = new categoryLVAdapter(getActivity(), R.layout.category_item_template,     ((ProfileActivity)getActivity()).interestResult.categorIEs);    ListvIEw.setAdapter(adapter);//      ListVIEw.setAdapter(adapter);}}

此代码可以正常工作.但是当我转到第二个选项卡,然后返回到第一个选项卡.它将再次加载数据.但我希望它只显示以前的片段,不再加载它.

链接到一个不错的教程也将有所帮助,但是我已经在关注this教程,但是它无法正常运行,因为我期望它能正常工作.

解决方法:

如果转到第三个选项卡,然后转到第二个或第一个选项卡,则将重新创建第一个选项卡并调用onCreate,这是片段的默认行为.但是,仅转到第二个选项卡然后返回到第一个选项卡将不会重新创建第一个选项卡.我仅在onCreate中对InterestTabFragment.java进行了一些更改.看看是否有帮助,如果没有,请通知我,我可以再试一次.谢谢…..

public VIEw onCreateVIEw(LayoutInflater inflater, VIEwGroup container,        Bundle savedInstanceState) {    // Todo auto-generated method stub    super.onCreateVIEw(inflater, container, savedInstanceState);    vIEw = inflater.inflate(R.layout.interest_tab_fragment, container, false);    ListvIEw = (horizontallistVIEw) vIEw.findVIEwByID(R.ID.LVcategory);        if(((ProfileActivity)getActivity()).interestResult.categorIEs == null){            Session session = Session.getActiveSession();            if (session != null && session.isOpened()) {                // Get the user's data                access_token = session.getAccesstoken();                makeInterestRequest(session);        }        } else {            categoryLVAdapter adapter = new categoryLVAdapter(getActivity(), R.layout.category_item_template,     ((ProfileActivity)getActivity()).interestResult.categorIEs);            ListvIEw.setAdapter(adapter);        }    return vIEw;}
总结

以上是内存溢出为你收集整理的java-Tab片段每次更改Tab时都会获取数据全部内容,希望文章能够帮你解决java-Tab片段每次更改Tab时都会获取数据所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1093572.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存