0
我正在爲Android設計一個應用程序,並且我有一個使用選項卡式界面的特定活動(3個選項卡,每個選項卡一個片段)。到現在爲止還挺好。如何從隱形標籤中獲取視圖?
問題是,一旦用戶在選項卡中輸入了所有必需的信息並按下按鈕,我需要檢索所有信息。但是,當我調用getViewById
嘗試獲取不可見選項卡中的某個視圖時,它將返回NULL
。
我已閱讀了幾個教程和SO線程解釋標籤界面,但沒有一個提供了一個工作示例;他們都創建了空白標籤。
我該怎麼做?
編輯:我有三個.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
一個有效的參考,而不是null
?
請發佈代碼片段以展示如何構建選項卡並使用片段 – AndroidEnthusiast 2014-10-03 10:21:58
好吧,我已經添加了一些代碼以更好地解釋該問題。抱歉耽擱了。 – ilvidel 2014-10-21 11:26:48