2017-02-01 13 views
0

Работа с активностью, tabLayout и фрагменты. При переходе от активности, содержащей tabLayout, RecyclerView содержит первую вкладку для фрагмента, которая отображает данные одного из элементов reclerView. Когда пользователь нажимает кнопку «Назад», данные recyclerView стираются. Пытаясь отладить код, источник не будет создавать tabLayout или перепрограммирование данных. На backPressed не вызывается метод.TabLayout, содержащий данные повторной обработки, стертые на backPressed

код файла класса, который содержит tabLayouts

public class HomeFragment extends Fragment implements TabLayout.OnTabSelectedListener { 

@BindView(R.id.tvRouteName) 
TextView tvRouteName; 
@BindView(R.id.pager) 
ViewPager viewPager; 
@BindView(R.id.tabLayout) 
TabLayout tabLayout; 
private TabPagerAdapter adapter; 

public HomeFragment() { 
    // Required empty public constructor 
} 

public static HomeFragment newInstance() { 
    HomeFragment fragment = new HomeFragment(); 
    return fragment; 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    if (getArguments() != null) { 
    } 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    View view = inflater.inflate(R.layout.fragment_home, container, false); 
    ButterKnife.bind(this, view); 

    //Adding the tabs using addTab() method 
    tabLayout.addTab(tabLayout.newTab().setText("All")); 
    tabLayout.addTab(tabLayout.newTab().setText("Pending")); 
    tabLayout.addTab(tabLayout.newTab().setText("Complete")); 
    tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 

    //Creating our pager adapter 
    adapter = new TabPagerAdapter(getActivity().getSupportFragmentManager(), tabLayout.getTabCount()); 

    //Adding adapter to pager 
    viewPager.setAdapter(adapter); 

    tabLayout.setupWithViewPager(viewPager); 

    // set route name to the route 
    String routeName = SiconApp.getInstance().getRouteName(); 
    if (routeName != null && !routeName.isEmpty()) 
     tvRouteName.setText(routeName); 

    return view; 
} 

@Override 
public void onTabSelected(TabLayout.Tab tab) { 
    //viewPager.setCurrentItem(tab.getPosition()); 
} 

@Override 
public void onTabUnselected(TabLayout.Tab tab) { 
} 

@Override 
public void onTabReselected(TabLayout.Tab tab) { 
} 
} 

Все усилия применяются. Пытались изменить код из onViewCreated, onResume и освежающий tabLayout т.д.

изображение приводится ниже, чтобы узнать общее количество суммы в recyclerView

CheckImage

+1

User 'getChildFragmentManager()' вместо 'getActivity(). GetSupportFragmentManager()'. – Wizard

+0

Чувак это правильный ответ. Я пробовал это с последних 48 часов, и ты спас меня –

+0

См. Комментарий достаточно :) – Wizard

ответ

1

Рассмотрим этот ответ как ответ этого выше комментарий:

Количество может быть изменено динамически, и сумма будет изменена исходя из количества и GrandTotal при изменении суммы. Я достиг этого, но при изменении текста каждый раз, когда я читаю весь массив снова и снова. Если у вас есть лучший подход, чтобы завершить это.

Первое, что нехорошо сделать в OnTextChange(). Вместо этого вы должны подумать о событии с щелчком около widget.
Виджет может быть button или клавиатура done кнопка.

Вот какой-то другой подход: -

  • Попробуйте открыть кок - про это вы можете ограничить количество, если вы предоставляете максимальное количество
  • Откройте dialog с editText и сделать кнопку, нажав на done, сделайте расчеты.

    [UPDATE 1]

    Добавление мое представление о расчете: -

    // Calculate GrandTotal for the very first time 
    int grandTotal = 0; 
    for (int i = 0; i < mDataSet.size(); i++) { 
        // addition of all the sub-totals 
    } 
    
    // Get an event of quantity change of recyclerview row - using dialogbox or spinner or anything 
    // basePrice is price of 1 quantity 
    // oldQuantity is before updating new quantity to model 
    currowModel = mDataSet.get(position); // Assuming currModel as current dataset item 
    grandTotal = grandTotal - (currowModel.getBasePrice() * currModel.getQuantity()); 
    currowModel.setQuantity(updatedQuantity); // Setting new quanity to model 
    grandTotal = grandTotal + (currowModel.getBasePrice() * currModel.getQuantity()); 
    

Счастливый кодирования!

+0

размещение моего кода, который я реализовал на onTextChanged –

+0

CustomerInvoiceFragment.grandTotal = 0; for (int i = 0; i

+0

каждый раз, когда я ввожу какое-то значение в свой editText, приведенный выше код запускается. Из аспектов кодирования я считаю, что это не очень хороший подход, потому что этот массивList читается несколько раз. –