如何在Android中点击按钮点击标签?

ray*_*ray 4 android android-fragments

FragmentPagerSupport是FragmentActivity类,FragmentA和FragmentB代表2个不同的选项卡.在第一个选项卡中,我有一个EditText和一个按钮.我的任务是按下按钮需要打开第二个选项卡并在第二个选项卡中显示EditText值.我也在使用FragmentStatePagerAdapter.

以下代码构建了FragmentActivity的onCreate()选项卡:

    for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++) {
        actionBar.addTab(actionBar.newTab()
                .setText(mSectionsPagerAdapter.getPageTitle(i))
                .setTabListener(this));
    }
Run Code Online (Sandbox Code Playgroud)

我在FragmentStatePagerAdapter中的代码如下:

public Fragment getItem(int position) {
    Fragment fragment = null;
    Bundle args = new Bundle();         
    switch (position) {
    case 0:
        fragment = FragmentA();
        args.putInt(FragmentA.ARG_SECTION_NUMBER, position + 1);
        fragment.setArguments(args);
    break;
    case 1:
        fragment = new FragmentB();
        args.putInt(FragmentB.ARG_SECTION_NUMBER, position + 1);
        fragment.setArguments(args);
    break;
    }
return fragment;
}
Run Code Online (Sandbox Code Playgroud)

单击按钮时我的FragmentA代码如下:

confirmButton.setOnClickListener(new View.OnClickListener() {
    public void onClick(View view) {


    }
}
Run Code Online (Sandbox Code Playgroud)

现在我卡在这里.在这里找不到代码应该调用第二个选项卡并根据tab1 EditText值显示值.

ian*_*ake 11

假设您的ViewPager名为mPager:

public void onClick(View view)
{
     mPager.setCurrentItem(1); // Change to page 1, i.e., FragmentB
}
Run Code Online (Sandbox Code Playgroud)

我建议详细阅读这个培训页面.它介绍了一些用于将信息从Fragment传递到Fragment的策略(通常通过让Activity实现Fragment随后可以调用的接口).

这实际上取决于你想要你的片段的耦合程度.你当然可以使用类似的东西

((FragmentB)getActivity().getSupportFragmentManager().findFragmentByTag(
    "android:switcher:" + pager.getId() + ":1")).setExitText(text)
Run Code Online (Sandbox Code Playgroud)

将文本从FragmentA传递到FragmentB,但是将片段彼此紧密地耦合到Activity包含的ViewPager.

我会建议

  1. 使您的Activity实现一个包含单个方法的接口,例如goToFragmentB(String exitText)
  2. 在FragmentA的onClick中调用此方法
  3. 有goToFragmentB:
    • 在FragmentB中调用setExitText(根据ViewPager源使用上面的findFragmentByTag使用该奇数标记)
    • 将寻呼机设置为FragmentB

  • getActivity().findViewById(R.id.pager)应该可以工作(使用您的ViewPager的任何ID). (2认同)