Androidの場合、私はAFragというクラスを持っています。サブクラス(ex.BFrag)からアクセス可能な保護されたフィールドを作成することが可能かどうか疑問に思っています。サブクラスが保護されたフィールドに割り当てられている参照にアクセスします。Javaで保護された変数アクセスと変更のルール
public class AFrag extends Fragment
{
protected EditText someEt;...
}
public class BFrag extends AFrag
{
@Override
onCreateView()
{
someEt = (EditText) rootView.findViewById(R.id.EditTextinBFragXml);...
}
}
BFragはchildFragmentとしてAFrag内にロードされます。 someEt.getText()のように、AFragの変数にアクセスしているときにNullPointerExceptionがスローされます。私の質問は、BFragのXMLへの参照は、AFragに戻って存在するのですか?
私は、UI EditTextビューの固有のセットを持つ複数の動的に読み込まれたフラグメントを持っています。私はすべてのオブジェクトのgetText()を呼び出す "保存"ボタンをホストする単一の親フラグメントを持っていたいと思います。それぞれの子フラグメントのビュー。
フラグメントは同じパッケージに入っています。私の質問は、スーパークラスが保護された変数に設定されたサブクラスの参照にアクセスできるかどうかです。私のユースケースでは、スーパークラスの変数は、サブクラスが初期化した後でもまだnullです。 –
"私の質問は、スーパークラスは、保護された" - >スーパークラスに設定されたサブクラスがパブリック変数であってもサブクラスにある変数にアクセスできないという参照にアクセスできるかどうかです。 「サブクラスがそれを初期化した後、私のユースケースのスーパークラスの変数は、まだnullでは」 - > –
「サブクラスは、それを初期化した後、私のユースケースのスーパークラスの変数には、まだnullである」 - > 'publicクラスBFragはAFrag { を拡張します@Override onCreateView(){ someEt =(のEditText)rootView.findViewById(R.id.EditTextinBFragXml); ...} } 'あなたが来ているどの値をチェックsubclass.Pleaseするために、スーパークラス変数を初期化しようとしています(EditText)rootView.findViewById(R.id.EditTextinBFragXml) –