2016-12-26 116 views
1

我是新来的android,我有我的TabActivity(动作栏选项卡)与一些片段。在第一个选项卡中,我有一个列表,当我切换第二个选项卡时,我想在第二个选项卡中显示所选列表的内容。在我的代码中,当我在第一个选项卡中选择列表项目时,它切换到第二个选项卡,但内容不更新,但是当我移到tab4和tab5然后返回到tab2时,我在第二个选项卡中获取内容更新?我不知道Tab是如何工作的?所以给我一个例子标签列表Fragmentandroid tabbed活动列表片段

我的第一个片段(TAB1)

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    View view; 
    Toast.makeText(getActivity(),"frag1",Toast.LENGTH_SHORT).show(); 
    view = inflater.inflate(R.layout.fragment_company, container, false); 
    TextView textView = (TextView)view.findViewById(R.id.section_label); 
    textView.setText("Company"); 

    ListView listView = (ListView)view.findViewById(R.id.companyList) ; 
    final List<Company> companies = Company.fetchCompanies(); 
    final List<String> compamnyNames = new ArrayList<String>(); 

    for (Company company : companies) { 
     compamnyNames.add(company.getName().getName()); 
    } 

    ArrayAdapter<String> listAdapter = new ArrayAdapter<String>(getContext(),android.R.layout.simple_list_item_1,compamnyNames); 
    listView.setAdapter(listAdapter); 

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
      Company.setSelectedCompany(companies.get(i)); 

      TabLayout tabLayout = (TabLayout) getActivity().findViewById(R.id.tabs); 
      tabLayout.getTabAt(1).select(); 

     } 
    }); 

    return view; 

} 

我的第二个片段(TAB2)

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

    return loadTableData(); 
} 


public View loadTableData() 
{ 
    LayoutInflater inflater = getActivity().getLayoutInflater(); 

    ViewGroup container = (ViewGroup) getView(); 

    View view; 

    view = inflater.inflate(R.layout.fragment_outstanding, container, false); 
    OutstandingAdapterGenerator adapterGenerator = new OutstandingAdapterGenerator(); 
    adapterGenerator.setContext(getActivity()); 

    ListView listView = (ListView)view.findViewById(R.id.outstandingPurchaseList) ; 


    adapterGenerator.setListViewResource(R.layout.list_item); 
    adapterGenerator.setPurchase(true); 
    adapterGenerator.setCompany(Company.getSelectedCompany()); 
    adapterGenerator.setViewIds(new int[]{R.id.textViewPartyName,R.id.textViewTotal}); 
    SimpleAdapter listAdapter = adapterGenerator.generateAdapter(); 
    listView.setAdapter(listAdapter); 
    return view; 
} 



@Override 
public void setUserVisibleHint(boolean isVisibleToUser) { 
    super.setUserVisibleHint(isVisibleToUser); 



    if(isVisibleToUser && isResumed()) 
    { 

     loadTableData(); 
    } 
} 
+0

请添加您的更新代码中的第二个片段 –

+0

请上传您为此做了代码。 –

回答

1

覆盖setUserVisibleHint方法你的第二个片段,并把你的更新代码我ñ它,我只是写我从你的代码获得,这是你的更新部分

@Override 
public void setUserVisibleHint(boolean isVisibleToUser) { 
    super.setUserVisibleHint(isVisibleToUser); 
    if (isVisibleToUser && isResumed()) { 
     adapterGenerator.setCompany(Company.getSelectedCompany()); 
     adapterGenerator.setViewIds(new int[] {R.id.textViewPartyName,R.id.textViewTotal}); 
     SimpleAdapter listAdapter = adapterGenerator.generateAdapter(); 
     listView.setAdapter(listAdapter); 
    } 
} 
+0

我做到了,但我面临同样的问题。我在第二个选项卡中获取内容,但是我的问题是当我单击第一个选项卡中的列表项时,它不会立即显示在第二个选项卡上,当我滑动到第4个和第5个选项卡时,然后回到我的第2个选项卡,内容已更新,我再次选择列表,内容没有改变,就像.. – Narendhran

+0

_I再次更新我的代码(上)_ – Narendhran

+0

感谢您的善良重播** masoud vali **,我犯了一个小错误,我把我的'setUserVisibleHint'这意味着我在'setUserVisibleHint'中调用的方法是'loadTableData'终于Iam在viewPager中使用'setOffScreenPageLimit'方法来解决我的问题 – Narendhran

0
//my view pager 


mViewPager = (ViewPager) findViewById(R.id.container); 
     mViewPager.setAdapter(mSectionsPagerAdapter); 
     mViewPager.setOffscreenPageLimit(6); 

//onCreateView 

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View view; 
     view = inflater.inflate(R.layout.fragment_outstanding, container, false); 
     return view; 
    } 

//UserVisibleHint 

    public void setUserVisibleHint(boolean isVisibleToUser) { 
     super.setUserVisibleHint(isVisibleToUser); 
     if(isVisibleToUser) 
     { 
      OutstandingAdapterGenerator adapterGenerator_purchase = new OutstandingAdapterGenerator(); 
     adapterGenerator_purchase.setContext(getActivity()); 

     ListView listView = (ListView)getView().findViewById(R.id.outstandingPurchaseList) ; 


     adapterGenerator_purchase.setListViewResource(R.layout.list_item); 
     adapterGenerator_purchase.setPurchase(true); 
     adapterGenerator_purchase.setCompany(Company.getSelectedCompany()); 
     adapterGenerator_purchase.setViewIds(new int[]{R.id.textViewPartyName,R.id.textViewTotal}); 
     SimpleAdapter listAdapter = adapterGenerator_purchase.generateAdapter(); 
     listView.setAdapter(listAdapter); 

     } 
    } 
+0

**这解决了我的问题** – Narendhran