2016-07-04 7 views
0

私のレイアウト用のXMLファイルで、フラグメントを追加しました。 私のフラグメントのレイアウトはLinearLayoutで、テキストビューが含まれています。フラグメント内のLinearLayoutへの参照を取得する

私のフラグメントクラスのLinearLayoutオブジェクトへの参照を取得したいと思いますが、私が思う、またはオンラインで見つけることができるすべてを試しても、常にnullです。

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 

    text = (TextView) getActivity().findViewById(R.id.text); 
    layout = (LinearLayout) getActivity().findViewById(R.id.layout); 

    if(layout == null){ 
     text.setText("null"); 
    } 
} 

このコードは、私のフラグメントクラスにあり、レイアウトがnullのためTextViewのテキストが "null"に設定されます。私はレイアウトとテキストビューへの参照をまったく同じ方法で取得しようとしているので、これはどのようにすることができますか?


アクティビティクラスのonCreateで

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_test); 

    manager = getFragmentManager(); 
    MyFragment = (MyFragment) manager.findFragmentById(R.id.fragment); 

} 

方法2

私は私の活動でのLinearLayoutへの参照を取得しようとしました。この試行でアクティビティのonCreateを次に示します。

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_test); 

    manager = getFragmentManager(); 
    MyFragment = (MyFragment) manager.findFragmentById(R.id.fragment); 

    LinearLayout ll = (LinearLayout) findViewById(R.id.layout); 
    TextView tv = (TextView) findViewById(R.id.text); 

    if(ll == null){ 
     tv.setText("null"); 
    } 
} 

これにより、テキストが「null」に変更されました。

+0

あなたの 'Activity.onCreate'を投稿してください。あなたのアクティビティでビューが作成されている場合は、コードをアクティビティに移動することをお勧めします –

+0

'Activity'から' Fragment'の 'LinearLayout'を取得しようとしていますか?私はそれを正しくしていますか? – Sunshinator

+0

'getActivity()。findViewById(R.id.text)'を参照していますか?私は 'onActivityCreated()'の中で 'getView()。findViewById(...)'を試してみましたが、フラグメントを通過するだけですが、どちらも動作しませんでした。 – Tirmulus

答えて

0

どちらの場合も、フラグメントクラスにはlayout = (LinearLayout) getView()、アクティビティではlayout = (LinearLayout) fragment.getView()と表示されています。これは、私がしていたことがうまくいかなかった理由(これは役に立つかもしれません)には答えませんが、これは問題を解決します。

関連する問題