我正在使用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。
提前致谢