Android 如何从不可见选项卡获取视图?

Android 如何从不可见选项卡获取视图?,android,tabs,Android,Tabs,我正在为Android设计一个应用程序,我有一个特定的活动,它使用一个选项卡式界面3个选项卡,每个选项卡一个片段。到目前为止,一切顺利 问题是,一旦用户在选项卡中输入了所有必需的信息并按下按钮,我就需要检索所有这些信息。但是,当我调用getViewById尝试获取某个不可见选项卡中的视图时,它返回NULL 我已经阅读了一些教程,所以线程解释了选项卡式界面,但没有一个提供了工作示例;他们都只是创建了空标签 我该怎么做 编辑:我有三个.xml文件,每个片段/选项卡一个。这是处理选项卡的活动中的相关代

我正在为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的。我添加了一些代码,以更好地解释此问题。抱歉耽搁了。