【问题标题】:android tabbed Activity list fragmentandroid 选项卡式活动列表片段
【发布时间】:2016-12-27 14:55:48
【问题描述】:

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

我的第一个片段(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();
    }
}

【问题讨论】:

  • 请在第二个片段中添加您的更新代码
  • 请上传您为此完成的代码。

标签: android android-fragments android-tabactivity


【解决方案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);
   }
}

【讨论】:

  • 我做到了,但我面临同样的问题。我在第二个选项卡中获取内容,但我的问题是当我单击第一个选项卡中的列表项时,它不会立即显示在第二个选项卡上,当我滑动到第 4 和第 5 个选项卡时,我回到我的第 2 个选项卡,内容已更新,我再次选择列表,内容没有像 on 一样改变..
  • 感谢您的重播masoud vali,我犯了一个小错误,我把我的观点放在setUserVisibleHint 中,这意味着我在setUserVisibleHint 中调用的方法是loadTableData 最后我在viewPager 中使用setOffScreenPageLimit 方法来解决我的问题
【解决方案2】:
//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);

        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-24
    • 1970-01-01
    • 1970-01-01
    • 2015-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多