3

私は通常のクラスを持っています(活動ではありません)。そのクラス内には、アクティビティへの参照があります。ここで、そのアクティビティのレイアウト xml に含まれるビューに (子を追加するために) アクセスしたいと考えています。そのアクティビティのレイアウト ファイルの名前がわかりません。アクセスしたいビューの ID しか知りません (例: R.id.my_view)。

どうやってやるの?

4

3 に答える 3

3

NullPointerException (質問に追加する必要があります) に関しては、XML で定義されたビューにアクセスするに、アクティビティでsetContentView()を呼び出したことを常に確認してください。使用例:

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ...
    }

    ...
}

すると、どこかで、

        ViewGroup group = (ViewGroup) context.findViewById(R.id.group); // In your example, R.id.my_view

setContentView() を呼び出す必要があるのは、呼び出される前に View(Group) が存在しないためです。find ViewById() は存在しないものを見つけることができないため、 null を返します

于 2012-08-10T14:49:03.510 に答える
3

それと同じくらい簡単です!

View view = activity.findViewById(R.id.my_view);

レイアウトの場合:

LinearLayout layout = (LinearLayout) activity.findViewById(R.id.my_layoutId);

ビューを追加するには:

layout.addView(view);
于 2012-08-10T14:10:53.610 に答える
0

メソッドにActivityパラメーターを受け入れさせ、それを使用してIDでビューを検索することができます。

元:

public class MyClass{

   public void doSomething(Activity context){
      TextView text=(TextView)context.findViewById(R.id.my_textview);
   }

}

それからあなたの活動で:

obj.doSomething(YourActivity.this);
于 2012-08-10T14:12:29.267 に答える