0

작업, tabLayout 및 단편 작업. tabLayout을 포함하는 액티비티로부터의 이동은 첫 번째 Tab의 RecyclerView가 reclerView 항목 중 하나의 데이터를 표시하는 프래그먼트로 포함됩니다. 사용자가 뒤로 버튼을 누르면 recyclerView 데이터가 삭제됩니다. 코드를 디버깅하려고하면 소스가 tabLayout을 만들거나 데이터를 다시 가져 오지 않습니다. backPressed에는 메서드가 호출되지 않습니다. tabLayoutsbackLayout에서 지워진 recyclerview 데이터가 포함 된 TabLayout

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의 코드를 변경하고 recyclerView에 양의 전체 내용은 아래 제공 tabLayout 등

이미지 새로 고침 시도하는 것은

CheckImage

+1

getActivity(). getSupportFragmentManager() 대신 사용자의'getChildFragmentManager()'를 사용하십시오. – Wizard

+0

이것은 정답입니다. 나는 지난 48 시간 동안 이걸 시험해 봤고 너는 나를 구해 줬어. –

+0

의견보기 충분하다 :) – Wizard

답변

1

이상이 댓글의 응답으로이 대답을 고려 :

양은 동적으로 변경 될 수 있으며 양은 양과 GrandTotal에 따라 금액 변경시 변경 될 수 있습니다. 나는 이것을 달성했지만 문자 배열을 읽을 때마다 배열을 반복해서 읽습니다. 이것을 완성하기위한 더 좋은 접근법이 있다면.

우선 첫번째로, 계산하기가 좋지 않다. OnTextChange(). 대신 widget의 클릭 이벤트가 있다고 생각해야합니다.
위젯은 button이거나 키보드의 done 버튼 일 수 있습니다. 여기


는 다른 접근 방식이다 : - 열

  • 시도 회 - 당신이 editText로 최대 수량
  • 열고 dialog를 제공하는 경우 프로 당신이 양을 제한 할 수있다 그리고 완료 버튼을 클릭하여 계산을 할 done 마십시오.

    [업데이트 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에 값을 입력 할 때마다 실행됩니다. 코딩 측면에서 나는이 arrayList가 여러 번 읽혀지기 때문에 이것이 좋은 접근법이 아니라고 생각합니다. –