Android 如何在viewpager选项卡中启动新活动
我正在使用ViewPager在android中编写一个选项卡式应用程序。目前,我有一个活动,叫做RSC活动,我想在一个选项卡中打开它。(RSCActivity实现onCreateView并有自己的UI)。我的主要问题是在RSCActivity中设置了click listener的按钮无法在选项卡式布局中实现,因为click listener方法是从RSC活动扩展而来的类的方法 代码- 我使用main活动启动RSCActivity: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
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运行
提前谢谢