我的佈局中有2個選項卡。我無法在非活動選項卡中的EditText中輸入輸入值。因此,讓我們說選擇保持registerLoginFragment的選項卡。以下代碼返回期望值。從非活動標籤中獲取輸入
EditText editTextEmail = (EditText)registerLoginFragment.getView().findViewById(R.id.editTextEmail);
但是正從第二標籤值是不活動的失敗,不活動標籤的NPE因爲getView()返回null。所以下面是失敗:
EditText EditTextFirstName = (EditText)registerPersonalFragment.getView().findViewById(R.id.EditTextFirstName);
所以我需要從第一個選項卡上的按鈕被點擊時從兩個選項卡獲得輸入。這兩個選項卡都會被訪問並輸入值。
多一點代碼:
public void onTabSelected(Tab tab, FragmentTransaction ft) {
if(tab.getTag().toString().equals("LOGIN_TAB")){
if(registerLoginFragment == null){
registerLoginFragment = Fragment.instantiate(this, RegisterLoginFragment.class.getName());
ft.add(R.id.linearLayoutRegister, (Fragment)registerLoginFragment);
}
else{
ft.attach((Fragment)registerLoginFragment);
}
currentFragment = registerLoginFragment;
}
else if(tab.getTag().toString().equals("PERSONAL_TAB")){
if(registerPersonalFragment == null){
registerPersonalFragment = Fragment.instantiate(this, RegisterPersonalFragment.class.getName());
ft.add(R.id.linearLayoutRegister, (Fragment)registerPersonalFragment);
}
else{
ft.attach((Fragment)registerPersonalFragment);
}
currentFragment = registerPersonalFragment;
}
}
所以,很顯然,這不是從非激活標籤中取得值以正確的方式,但我沒有找到正確的方法。
我想我可以做到這一點:Get text from edit text fields that are in multiple tabs
但有一個更「優雅」的方式?
感謝 Velja