1

レイアウトを作成しました。そこにビューを追加しました:

<app.test.application.EObrazView
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

たとえば、ユーザーはボタンをクリックしています。In Activity は適切な関数を実行していますsetOnClickListener。それに関する情報を View class に送信したいapp.test.application.EObrazView

これを行う方法?そのクラス間で情報を共有する方法は?

編集:

EObrazView view1;
view1 = (EObrazView) findViewById(R.id.myView);
[button on click listener]
view1.newImage(wo);

新しいイメージ(); アクティビティクラスのボタンが押されたときに使いたいEObrazViewの関数です。残念ながら、エラーがあります: java.lang.NullPoniterException

4

2 に答える 2

2

ビューがあなたからのものであると仮定すると、そのようです。ビュークラスでメソッドを作成する必要があります。

次に、XML でビューに ID を割り当てます。

android:id="@+id/myId"

そして、アクティビティでこのビューへの参照を取得します

EObrazView view = (EObrazView)findViewById(R.id.myId);

そして、メソッドを呼び出すことができます。

于 2012-11-30T20:40:42.140 に答える
2

レイアウト コードを次のように変更します。

<app.test.application.EObrazView
    android:id="@+id/myView"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

そして、setContentViewOnCreateで呼び出した後、呼び出しActivityてそのビューへの参照を取得できますfindViewById(R.id.myView).setOnClickListener()

を使用しているOnClickListener場合、onClickが呼び出されると、クリックされたビューへの参照が与えられ、好きな (パブリック) 関数を呼び出すことができます。

アクティビティに複数のクリック可能なビューがある場合、アクティビティを実装してから、クリック可能なビューごとに OnCreate 内でOnClickListener 呼び出し、switch ステートメントを次のように使用します。findViewById(R.id.someViewId).setOnClickListener(this)

@Override
public void onClick(View someView) {
    switch (someView.getId()){
         case someViewId:
             //doing something such as call someView.someFunction()
             break;
         case someOtherViewId:
             //do something else!
             break;
    }
}
于 2012-11-30T20:47:28.113 に答える