Android 如何从不可见选项卡获取视图?
我正在为Android设计一个应用程序,我有一个特定的活动,它使用一个选项卡式界面3个选项卡,每个选项卡一个片段。到目前为止,一切顺利 问题是,一旦用户在选项卡中输入了所有必需的信息并按下按钮,我就需要检索所有这些信息。但是,当我调用getViewById尝试获取某个不可见选项卡中的视图时,它返回NULL 我已经阅读了一些教程,所以线程解释了选项卡式界面,但没有一个提供了工作示例;他们都只是创建了空标签 我该怎么做 编辑:我有三个.xml文件,每个片段/选项卡一个。这是处理选项卡的活动中的相关代码:Android 如何从不可见选项卡获取视图?,android,tabs,Android,Tabs,我正在为Android设计一个应用程序,我有一个特定的活动,它使用一个选项卡式界面3个选项卡,每个选项卡一个片段。到目前为止,一切顺利 问题是,一旦用户在选项卡中输入了所有必需的信息并按下按钮,我就需要检索所有这些信息。但是,当我调用getViewById尝试获取某个不可见选项卡中的视图时,它返回NULL 我已经阅读了一些教程,所以线程解释了选项卡式界面,但没有一个提供了工作示例;他们都只是创建了空标签 我该怎么做 编辑:我有三个.xml文件,每个片段/选项卡一个。这是处理选项卡的活动中的相关代
public class SetupActivity extends FragmentActivity implements ActionBar.TabListener {
ActionBar actionBar;
ViewPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_setup);
// Set up the action bar.
actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
// Set up the ViewPager with the sections adapter.
viewPager = (ViewPager) findViewById(R.id.pager);
FragmentManager fm = getSupportFragmentManager();
/** Defining a listener for pageChange */
ViewPager.SimpleOnPageChangeListener pageChangeListener = new ViewPager.SimpleOnPageChangeListener(){
@Override
public void onPageSelected(int position) {
super.onPageSelected(position);
actionBar.setSelectedNavigationItem(position);
}
};
/** Setting the pageChange listner to the viewPager */
viewPager.setOnPageChangeListener(pageChangeListener);
/** Creating an instance of FragmentPagerAdapter */
MyFragmentPagerAdapter fragmentPagerAdapter = new MyFragmentPagerAdapter(fm);
viewPager.setAdapter(fragmentPagerAdapter);
actionBar.setDisplayShowTitleEnabled(true);
/** Defining tab listener */
ActionBar.TabListener tabListener = new ActionBar.TabListener() {
@Override
public void onTabReselected(Tab arg0, android.app.FragmentTransaction arg1) {
}
@Override
public void onTabSelected(Tab tab, android.app.FragmentTransaction ft) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(Tab tab, android.app.FragmentTransaction ft) {
}
};
/** Creating Android Tab */
Tab tab = actionBar.newTab().setText("Partido").setTabListener(tabListener);
actionBar.addTab(tab);
tab = actionBar.newTab().setText("Equipo").setTabListener(tabListener);
actionBar.addTab(tab);
tab = actionBar.newTab().setText("Alineación").setTabListener(tabListener);
actionBar.addTab(tab);
}
/**
* This method is invoked when the user presses a button on tab number 3
*/
private void checkTeam() throws MatchNotReadyException {
EditText teamName = (EditText) findViewById(R.id.editTeamName); // this EditText is in tab number 1
String name = teamName.getText().toString(); // I get a NullPointerException here
if(name == null || name.isEmpty()) {
throw new MatchNotReadyException();
}
//some more actions
}
那么,要获得对EditText的有效引用而不是空引用,我必须做些什么呢?如果您使用FragmentStatePagerAdapter作为适配器的基类,它将在您移动到多个选项卡时删除这些片段
使用FragmentPagerAdapter作为基本适配器。我不确定这是否是您的问题,因为您没有适配器代码,但我有一个类似的问题,并且解决了它。请发布一个代码片段,说明您是如何构建选项卡和使用fragmentsOk的。我添加了一些代码,以更好地解释此问题。抱歉耽搁了。