如何在viewpager选项卡中启动新活动

时间:2016-04-15 04:14:49

标签: android android-fragments android-studio tabs android-viewpager

我正在使用ViewPager在android中编写选项卡式应用程序。目前,我有一个名为RSC Activity的活动,我想在选项卡中打开它。 (RSCActivity实现onCreateView并具有自己的UI)。我的主要问题是在RSCActivity中设置了单击侦听器的按钮,无法在选项卡式布局中实现,因为单击侦听器方法是从RSC Activity扩展的类的方法。

代码 - 我使用MainActivity启动RSCActivity:

public class MainActivity extends AppCompatActivity implements RadioGroup.OnCheckedChangeListener {
      protected void onCreate(Bundle savedInstanceState) {
            ..
            Intent intent = new Intent(getActivity(), RSCActivity.class);
            startActivity(intent);
            ..
      }

    public class SectionsPagerAdapter extends FragmentPagerAdapter {

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

    @Override
    public Fragment getItem(int position) {
        // getItem is called to instantiate the fragment for the given page.
        // Return a PlaceholderFragment (defined as a static inner class below).

        switch (position) {
            case 0:
                Tab1 tab1 = new Tab1();
                return tab1;
            case 1:
                Tab2 tab2= new Tab2();
                return tab2;
            case 2:
                Tab3 tab3= new Tab3 ();
                return tab3;
            default:
                return null;
        }
    }

    @Override
    public int getCount() {
        // Show 3 total pages.
        return 3;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        switch (position) {
            case 0:
                return "Tab1";
            case 1:
                return "Tab2";
            case 2:
                return "Tab3";
        }
        return null;
    }
}
    public static class Tab1 extends Fragment{

        public Tab1() {
        }

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

    }
}

在RSCActivity中,我设置视图并单击侦听器,如此,

public class RSCActivity extends BleProfileServiceReadyActivity<RSCService.RSCBinder> {
    ...
    @Override
    protected void onCreateView(final Bundle savedInstanceState) {
        setContentView(R.layout.activity_feature_rsc);
        final Button connectButton = (Button) findViewById(R.id.action_connect);
        connectButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //connectButton.setText("Clicked");
                onConnectClicked(v);
            }
        });
    }
...
}

如果我没有在RSCActivity中调用setContentView,那么我无法设置点击监听器,因为onConnectClicked是RSCActivity的一部分,但这会在选项卡式视图之外打开一个单独的屏幕。现在看来,我必须打开一个新屏幕才能点击CONNECT,但我希望用户界面在Tab1中打开并能够点击CONNECT。

如上所述,我无法将onConnectClicked移动到MainActivity中。将活动转变为服务的路线似乎不可行,因为RSCActivity扩展了另一个活动,反过来又扩展了另一个活动等。当我在Tab1内部时,我需要运行RSCActivity。

提前致谢

0 个答案:

没有答案