首页 > 解决方案 > 如何通过单击按钮在片段之间切换并相互传输数据?

问题描述

这是我现在正在处理的代码——我们在课堂上得到它,我没有完全理解它,我正在尝试这样做并添加一些特性——这就是我在这里的原因。

MAIN ACTIVITY:
ViewPager viewPager = findViewById(R.id.viewPager);
FragmentAdapter adapter = new FragmentAdapter(getSupportFragmentManager(), MainActivity.this);


viewPager.setAdapter(adapter);
TabLayout tab = findViewById(R.id.tabLayout);
tab.setupWithViewPager(viewPager);

那是我的主要活动类,它链接到 activity_main.xml。这就是 onCreate 方法中的全部内容。

我将 FragmentAdapter 与 viewPager 一起使用,从而获取它的参数,例如。字符串选项卡标题 []。

片段类使用不同的 .xml,layout_page。

FragmentAdapter 类如下:

public class FragmentAdapter extends FragmentPagerAdapter {
    final int PAGE_COUNT = 3;
    private String tabTitle[] = new String[] {"TAB1", "TAB2", "TAB3"};
    private Context context;

    public FragmentAdapter(FragmentManager fm, Context context) {
        super(fm);
        this.context = context;
    }

    @Override
    public Fragment getItem(int i) {
        return PageFragment.newInstance(i);
    }

    @Override
    public int getCount() {
        return PAGE_COUNT;
    }

    @Nullable
    @Override
    public CharSequence getPageTitle(int position) {
        return tabTitle[position];
    }
}

实际的 PageFragment 类:

public class PageFragment extends Fragment {
    public static final String ARG_PAGE="ARG_PAGE";
    private int page;

    public static PageFragment newInstance(int page) {
        Bundle args = new Bundle();
        args.putInt(ARG_PAGE, page);

        PageFragment fragment = new PageFragment();
        fragment.setArguments(args);

        return fragment;
    }

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        page = getArguments().getInt(ARG_PAGE);
    }

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {


        View view = inflater.inflate(R.layout.fragment_page, container, false);
        TextView textView = view.findViewById(R.id.textView);
        textView.setText("Fragment " + page);


        return view;
    }
}

我想在 Fragment 0(TAB 1)和 EditText 上添加一个按钮,并使用 onclicklistener 将数据保存在文本字段中,打开一个新选项卡(片段)并将数据传输到那里。他们都在同一个活动。

我该怎么办?

标签: androidandroid-fragmentsandroid-viewpageradapterfragmentpageradapter

解决方案


推荐阅读