当前位置: 首页 > 知识库问答 >
问题:

如何在Android Studio 3.5(最新版本)的导航抽屉片段中添加选项卡式活动

元昊苍
2023-03-14

请告诉我如何在Android Studio 3.5(最新版本)的导航抽屉片段中添加选项卡式活动。我遇到了“无法通过findViewById和getSupportFragmentManager解决方法”的问题。有什么我需要导入,我使用的是最新版本和androidx。如果我将implements FragmentActivity或任何其他活动添加到类中,它将在关闭应用程序时引发异常。

公共类SendMoneyFragment扩展了片段{

private SendMoneyViewModel toolsViewModel;

public View onCreateView(@NonNull LayoutInflater inflater,
                         ViewGroup container, Bundle savedInstanceState) {
    toolsViewModel =
            ViewModelProviders.of(this).get(SendMoneyViewModel.class);
    View  root = inflater.inflate(R.layout.fragment_sendmoney, container, false);
    final TextView textView = root.findViewById(R.id.text_sendmoney);
    toolsViewModel.getText().observe(this, new Observer<String>() {
        @Override
        public void onChanged(@Nullable String s) {
            textView.setText(s);
        }
    });
    return root;

    //setupViewPager();

    //method two
    ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
    TabsAdapter adapter = new TabsAdapter(getSupportFragmentManager());
    viewPager.setAdapter(adapter);

    TabLayout tabLayout = (TabLayout) findViewById(R.id.main_tabs);
    tabLayout.setupWithViewPager(viewPager);
}

共有1个答案

田博易
2023-03-14

解决方案非常有效:

公共类SendMoneyFragment扩展了片段{

ViewPager pager;


      private SendMoneyViewModel toolsViewModel;

  public View onCreateView(@NonNull LayoutInflater inflater,
                         ViewGroup container, Bundle savedInstanceState) {
      toolsViewModel = ViewModelProviders.of(this).get(SendMoneyViewModel.class);
      View root = inflater.inflate(R.layout.fragment_sendmoney, container, false);
      final TextView textView = root.findViewById(R.id.text_sendmoney);

      TabLayout tabs = (TabLayout) root.findViewById(R.id.main_tabs);

      pager=(ViewPager) root.findViewById(R.id.pager);

      ViewPagerAdapter adapter = new ViewPagerAdapter(getFragmentManager());

      adapter.addFragment(new MoneyAccount(), "Send To Accounts");
      adapter.addFragment(new MoneyAgents(), "Send To Agents");
      adapter.addFragment(new MoneyBanks(), "Send To Banks");

      pager.setAdapter(adapter);
      tabs.setupWithViewPager(pager);

      toolsViewModel.getText().observe(this, new Observer<String>() {
        @Override
        public void onChanged(@Nullable String s) {
            textView.setText(s);
        }
    });
    return root;



}



class ViewPagerAdapter extends FragmentPagerAdapter {
    private final List<Fragment> mList = new ArrayList<>();
    private final List<String> mTitleList = new ArrayList<>();

    public ViewPagerAdapter(FragmentManager supportFragmentManager) {
        super(supportFragmentManager);
    }

    @Override
    public Fragment getItem(int i) {
        return mList.get(i);
    }

    @Override
    public int getCount() {
        return mList.size();
    }

    public void addFragment(Fragment fragment, String title) {
        mList.add(fragment);
        mTitleList.add(title);
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return mTitleList.get(position);
    }
}
 类似资料:
  • 我正在尝试在我的android应用中实现一个选项卡导航,但是我想在每个选项卡中运行一个不同的activity。我一直在读android开发页面,他们坚持使用片段导航活动。根据我的理解,你不能有一个片段类本身,它必须包含在一个activity中。 是否可以为每个选项卡创建一个新的activity,并在onTabSelected()函数中运行该activity,同时从正在运行的activity中的片段

  • 问题内容: 在以下活动中,我上面有一个片段和一个图像。片段只是一个较暗的操作栏,上面有图片。我正在尝试将左侧幻灯片菜单作为一个片段,以便可以在每次活动中使用它。 主要活动; 主要活动XML; 每个活动上应包含的标题栏片段; 标题栏片段XML; 如何在标题栏中实现导航抽屉? 问题答案: 尝试这样的操作,对于布局文件,您只需要 实现可以像这样简单。

  • 我试过了。我不成功。我正在写我的步骤。如果有人能帮我。 > 使用Android Studio创建新项目并选择“导航抽屉活动” 我将FrameLayout放在主活动中,如下所示 我使用v4创建了新类,如下所示。应用程序。碎片 我制作了碎片管理器,如下所示, 调用**public boolean onNavigationItemSelected(MenuItem项)** 我学了一点,但没能成功。这不是

  • 我希望能够使用导航抽屉,并根据导航中的选择在不同片段之间进行更改。 我正在使用Android Studio,基本上我所做的是这样的: 使用内置模板“导航抽屉活动”创建了一个新项目 创建了一个空白片段 然后我更改了onNavigationDrawerItemSelected方法中的一些代码。 我的程序崩溃了,给了我很多我不理解的错误。我做错了什么?

  • 我有一个主活动启动导航抽屉。 也有一些片段。 我需要从片段内部更改导航抽屉列表的标题。 我尝试了这个内部片段: 但是到目前为止还没有运气。这是我的主要活动: 在主活动类中使用相同的方法有效,但在片段中无效。我不知道如何更新字符串并通知抽屉此更改!