日付を選択すると、incomefrag
とexpenditurefrag
をリフレッシュしようとしています。ここに私がしたことがあります。日付の変更に応じて変更されるのではなく、別のタブが選択されたときに変更されます。メインアクティビティの変更に応じて、タブ付きアクティビティのフラグメントをリフレッシュするには
フラグメントを呼び出すアクティビティ。コードは200行以上のため、imp部分だけを貼り付けているためです。 このアクティビティでは、開始日と終了日を選択します。 incomefrag
とexpenditurefrag
を日付の変更に応じて変更し、タブ間をスライドさせないようにします。
// extends AppComactActivity
private void setupViewPager(final ViewPager viewPager) {
SectionsPageAdapter adapter = new SectionsPageAdapter(getSupportFragmentManager());
adapter.addFragment(new IncomeCatFrag(), "Income");
adapter.addFragment(new ExpenditureCatFrag(), "Expenditure");
viewPager.setAdapter(adapter);
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int i, float v, int i1) {
}
@Override
public void onPageSelected(int i) {
viewPager.getAdapter().notifyDataSetChanged();
}
@Override
public void onPageScrollStateChanged(int i) {
}
});
}
SectionsPageAdapter
public class SectionsPageAdapter extends FragmentStatePagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public void addFragment(Fragment fragment, String title) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
public SectionsPageAdapter(FragmentManager fm) {
super(fm);
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position);
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
@Override
public int getCount() {
return mFragmentList.size();
}
}
これが私のincomefrag
です。支出fragも似ています。 (変更が発生したときに今までに)意図をbroascastためにあなたのメインの活動のすべての 利用LocalBroadcastManagerの
//extends Fragment
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.income_frag, container, false);
populate1(); // implemented later. searches through db to fill textviews etc.
return view;
}