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

Android 如何在viewpager选项卡中启动新活动,android,android-fragments,android-studio,tabs,android-viewpager,Android,Android Fragments,Android Studio,Tabs,Android Viewpager,我正在使用ViewPager在android中编写一个选项卡式应用程序。目前,我有一个活动,叫做RSC活动,我想在一个选项卡中打开它。(RSCActivity实现onCreateView并有自己的UI)。我的主要问题是在RSCActivity中设置了click listener的按钮无法在选项卡式布局中实现,因为click listener方法是从RSC活动扩展而来的类的方法 代码- 我使用main活动启动RSCActivity: public class MainActivity extend

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

代码- 我使用main活动启动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中,我设置了视图,然后像这样单击listener

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扩展了BleProfileServiceReadyActivity{
...
@凌驾
受保护的void onCreateView(最终捆绑包savedInstanceState){
setContentView(R.layout.activity\u feature\u rsc);
最终按钮连接按钮=(按钮)findViewById(R.id.action\u connect);
connectButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//connectButton.setText(“单击”);
未连接(v);
}
});
}
...
}
如果我没有在RSCActivity中调用setContentView,那么我就无法设置click侦听器,因为OnConnectionClicked是RSCActivity的一部分,但这会在选项卡式视图之外打开一个单独的屏幕。因此,现在,我必须打开一个新屏幕来单击CONNECT,但我希望UI在Tab1中打开并能够单击CONNECT

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

提前谢谢