2

私はfragments自分のアプリケーションに違いがあり、それらは異なるレイアウトを持っているので、exの別のアクティビティからアクセスしlayout idsたい.buttontextview

私はfragment 呼び出されMyFragment、それにはレイアウトファイルfrag.xmlMainActivityレイアウト付きmain.xml.infrag.xmlがあります

<Button
android:id="@+id/myButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>

の id にアクセスしたいのですが、Buttonこのfarg.xmlようにアクセスする場合、どのようにアクセスできMainActivity ますか?Button button=(Button)findViewById(R.id.myButton);NullPointerExceptiononClick()MainActivity

4

3 に答える 3

1

R.id.myButtonボタンのIDを参照する方法です。ただし、このボタンは のビュー階層でのみ使用できますfrag.xml。そのため、呼び出したコンテキストのビュー階層にボタンが存在しない場合は、findViewById(R.id.myButton)を返す必要があります。 nullfindViewById(R.id.myButton)

メイン アクティビティからフラグメント内のボタンにアクセスするには、メイン アクティビティがフラグメントで呼び出すことができるメソッドを記述し、フラグメントにボタンへのアクセス/変更を行わせ、必要な情報をメイン アクティビティに返す必要があります。 .

于 2013-03-29T04:10:40.650 に答える
1

ボタンのIDを見つけることができます

buttonid = getResources().getIdentifier(myButton , "Button", getPackageName());   

最初のパラメーターは @+id の後の XML からの名前、2 番目はタイプ、3 番目はパッケージ名です。

于 2013-03-29T04:32:46.497 に答える
0

各フラグメントのメイン レイアウトを見つけて、クラスの静的配列に格納します。各フラグメントでビューを見つけて、クラス (おそらく別のクラス) の静的フィールドに格納できます。

class Store{
public static view;
}

断片的に:

Stroe.view = (Button)findViewById(R.id.myButton);

活動中:

Button btn = Store.view;
于 2013-03-29T03:49:10.793 に答える