Фрагмент списка действий с вкладками Android

Я новичок в Android, у меня есть TabActivity (вкладка панели действий) с некоторыми фрагментами. На первой вкладке у меня есть список, и я хочу отображать содержимое выбранного списка на второй вкладке при переключении на вторую вкладку. В моем коде, когда я выбрал элемент списка на первой вкладке, он переключается на вторую вкладку, но содержимое не обновляется, но когда я перехожу на вкладку 4 и вкладку 5, затем возвращаюсь на вкладку 2, я получаю обновление содержимого на второй вкладке. ? Я не знаю, как работает Tab? Итак, дайте мне пример списка с вкладками 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();
    }
}

person Narendhran    schedule 26.12.2016    source источник
comment
пожалуйста, добавьте свой код обновления во второй фрагмент   -  person masoud vali    schedule 26.12.2016
comment
Пожалуйста, загрузите код, который вы сделали для этого.   -  person Sneha Sarkar    schedule 26.12.2016


Ответы (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);
   }
}
person masoud vali    schedule 26.12.2016
comment
Я сделал это, но я столкнулся с той же проблемой. Я получаю содержимое на второй вкладке, но моя проблема в том, что когда я нажимаю элемент списка на первой вкладке, он не сразу отображается на второй вкладке, когда я перехожу на 4-ю и 5-ю вкладки, я возвращаюсь на свою 2-ю вкладку, содержимое был обновлен, и снова я выбираю список, содержимое не изменилось, как на .. - person Narendhran; 26.12.2016
comment
спасибо за ваше любезное повторение masoud vali, и я сделал небольшую ошибку, поместив свое представление в setUserVisibleHint, что означает, что метод, который я вызвал в setUserVisibleHint, является loadTableData, наконец, я использую метод setOffScreenPageLimit в viewPager для решения моего проблема - person Narendhran; 27.12.2016