llf2580 2023-04-01 22:14 采纳率: 66.7%
浏览 53

fragment界面怎么点击按钮刷新界面?

我在MainActivity界面放置了四个fragment,实现的是底部导航栏的功能,一个fragment就是一个界面
第三个fragment上显示了一些数据库内的信息,又放了一个按钮,现在我想点击按钮后修改数据库,同时刷新fragment界面,因为不刷新的话fragment上展示的数据库信息就不对。这该怎么做?修改数据库的代码已经写完了,不知道刷新界面怎么写。
我之前是点击按钮跳转MainActivity,但是这样会自动展示第一个fragment,怎样可以点击后不跳转,只刷新fragment?
MainActivity代码:

public class MainActivity extends AppCompatActivity implements BottomNavigationView.OnNavigationItemSelectedListener, ViewPager.OnPageChangeListener {
    ViewPager viewPager;
    BottomNavigationView bottomNavigationView;
    HomeFragment homeFragment = new HomeFragment();
    CommunityFragment communityFragment = new CommunityFragment();
    MallFragment mallFragment = new MallFragment();
    MineFragment mineFragment = new MineFragment();
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        init();//初始化
    }
    private void init() {
        //获取页面标签对象
        viewPager = findViewById(R.id.viewPager);
        viewPager.setOnPageChangeListener(this);//添加页面切换监视器
        bottomNavigationView = findViewById(R.id.bottomNavigation);
        bottomNavigationView.setOnNavigationItemSelectedListener(this);//添加导航栏选择监视器
        viewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {//给页面添加适配器
            @NonNull
            @Override
            public Fragment getItem(int position) {
                switch(position) {
                    case 0:return homeFragment;
                    case 1:return communityFragment;
                    case 2:return mallFragment;
                    case 3:return mineFragment;
                }
                return null;
            }
            @Override
            public int getCount() {//界面个数
                return 4;
            }
        });
    }
    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {    }
    @Override
    public void onPageSelected(int position) {
        bottomNavigationView.getMenu().getItem(position).setChecked(true);
    }
    @Override
    public void onPageScrollStateChanged(int state) {    }
    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
        viewPager.setCurrentItem(item.getOrder());
        return true;
    }
}
  • 写回答

3条回答 默认 最新

  • m0_60136239 2023-04-01 22:29
    关注

    要刷新当前 fragment 界面,可以使用 FragmentTransaction 类中的 replace 方法。当调用 replace 方法时,它会将现有的 fragment 替换为新的 fragment,从而刷新界面。
    以下是示例代码:

    // 获取当前 fragment 的实例
    Fragment currentFragment = getSupportFragmentManager().findFragmentById(R.id.fragment_container);

    // 创建一个新的 fragment 实例,并传入需要的参数
    Fragment newFragment = new MyFragment();
    Bundle args = new Bundle();
    args.putString("key", "value");
    newFragment.setArguments(args);

    // 开始 FragmentTransaction
    FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

    // 替换当前的 fragment 为新的 fragment
    transaction.replace(currentFragment.getId(), newFragment);

    // 提交事务
    transaction.commit();
    在你的按钮点击事件中,调用以上代码,并替换为当前 fragment 实例和新的 fragment 实例。确保新的 fragment 包含了更新后的数据库信息。
    另外,如果你只想刷新当前 fragment 的数据,可以在 fragment 中添加一个公共方法,用于更新数据并刷新界面。在按钮点击事件中,直接调用这个方法即可。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月1日

悬赏问题

  • ¥15 如何把LibreOffice添加到自定义层中
  • ¥35 这个的负序网络和零序网络怎么画?(答疑)
  • ¥200 基于同花顺supermind的量化策略脚本编辑
  • ¥20 Html备忘录页面制作
  • ¥15 黄永刚的晶体塑性子程序中输入的材料参数里的晶体取向参数是什么形式的?
  • ¥20 数学建模来解决我这个问题
  • ¥15 计算机网络ip分片偏移量计算头部是-20还是-40呀
  • ¥15 stc15f2k60s2单片机关于流水灯,时钟,定时器,矩阵键盘等方面的综合问题
  • ¥15 YOLOv8已有一个初步的检测模型,想利用这个模型对新的图片进行自动标注,生成labellmg可以识别的数据,再手动修改。如何操作?
  • ¥30 NIRfast软件使用指导