通过重新创建它在两个片段之间滑动

时间:2017-07-01 12:45:27

标签: android android-fragments android-viewpager

我有两个片段,一个将整数发送到Sql数据库,另一个将显示它们两个片段都正常工作。但是,当我向数据库发送一个整数并且我滑动到显示片段时,在按下按钮之前它不会刷新,我想在移动到片段后自动进行: 这是我的主要活动:

public class MainActivity extends AppCompatActivity   {
 int index;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(activity_main);


    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    SectionsPagerAdapter mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());


    ViewPager mViewPager = (ViewPager) findViewById(R.id.container);
    mViewPager.setAdapter(mSectionsPagerAdapter);
    mViewPager.getAdapter().notifyDataSetChanged();

    mViewPager.setOffscreenPageLimit(0);

    TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
    tabLayout.setupWithViewPager(mViewPager);


    //------------- Intlize Fragment ----//
    Dash dash = new Dash();
    getSupportFragmentManager().beginTransaction().add(R.id.dashfragment, dash).commit();
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();

        if (id == R.id.action_settings) {
        Intent i = new Intent(this, AboutMe.class );
        startActivity(i);
    }

    return super.onOptionsItemSelected(item);
}

public static class PlaceholderFragment extends Fragment {

    private static final String ARG_SECTION_NUMBER = "section_number";

    public PlaceholderFragment() {
    }

    /**
     * Returns a new instance of this fragment for the given section
     * number.
     */
    public static PlaceholderFragment newInstance(int sectionNumber) {
        PlaceholderFragment fragment = new PlaceholderFragment();
        Bundle args = new Bundle();
        args.putInt(ARG_SECTION_NUMBER, sectionNumber);
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_main, container, false);
        return rootView;
    }
}

/**
 * A {@link FragmentPagerAdapter} that returns a fragment corresponding to
 * one of the sections/tabs/pages.
 */
public class SectionsPagerAdapter extends FragmentPagerAdapter {

    public SectionsPagerAdapter(FragmentManager fm) {
        super(fm);
    }



    @Override
    public Fragment getItem(int position) {
        switch (position){
            case 0:
                Dash dash = new Dash();
                return dash;
            case 1:
                Caluclate caluclate = new Caluclate();
                return caluclate;
            case 2:
                AskMe askMe = new AskMe();
                return askMe;
            case 3:
                TeamPicker teamPicker = new TeamPicker();
                return teamPicker;
        }
        return null;
    }

我读了很多解决方案,但我无法弄清楚。

1 个答案:

答案 0 :(得分:0)

您可以执行类似

的操作
if (fragment.isVisible()) {
   refreshItFirst;
}

BTW为什么要为Db的插入取一个片段 - 有一个辅助类?

方法isVisible()会帮助你。

请看这篇文章Replace Fragment inside a ViewPager