0

レイアウトに 2 つのタブがあります。非アクティブなタブの EditText に入力された入力値を取得できません。したがって、registerLoginFragment を保持するタブが選択されているとします。次のコードは期待値を返します。

EditText editTextEmail = (EditText)registerLoginFragment.getView().findViewById(R.id.editTextEmail);

しかし、非アクティブなタブの getView() が null を返すため、非アクティブな 2 番目のタブからの値の取得は NPE で失敗します。したがって、以下は失敗しています:

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;
    }

}

明らかに、これは非アクティブなタブから値を取得する正しい方法ではありませんが、適切な方法を見つけることができません。

私はこれを行うことができると思います:複数のタブにある編集テキスト フィールドからテキストを取得する

しかし、もっと「エレガントな」方法はありますか?

ありがとう

4

1 に答える 1