0

私が呼び出すアプリケーションでsetContentView( layout1.xml );、異なるレイアウト ファイル内の要素にアクセスしたいので、それを layout2.xml と呼びます。

私が試してみました

view1 = (View) findViewById( R.layout.layout2 ); 

また、レイアウトにIDを追加して試しました

view1 = (View) findViewById( r.id.layout2 ); 

これらはどちらも機能しません。それらは問題なくコンパイルされますが、実行するとすぐに次のようなものを呼び出そうとします

button1 = view1.findViewById( R.id.button1 );

null ポインター例外が発生します。

4

3 に答える 3

2

次のように最初にインフレートすることで、layout2 から要素にアクセスできます。

    LayoutInflater inflater = LayoutInflater.from(getApplicationContext());
    LinearLayout layout = (LinearLayout)inflater.inflate(R.layout.layout2, null);
    //or View view = (View)inflater.inflate(R.layout.layout2, null);
    Button button = (Button)layout.findViewById(R.id.button1);
    //add code for button
于 2013-01-08T19:12:17.060 に答える
2

次のように 2 番目のレイアウトを取得するには、レイアウト インフレータを使用する必要があります。

 View view = LayoutInflater.from(getBaseContext()).inflate(R.layout.layout2, null);

次に、そのレイアウトからボタンを参照します。

Button button1 = view.findViewById( R.id.button1 );
于 2013-01-08T19:00:22.313 に答える
0

ここを見ることを検討してくださいincludeXML で使用して、レイアウトを作成し、さまざまなレイアウトで再利用できます。

于 2013-01-08T18:59:55.653 に答える