2011-01-03 10 views
0

デフォルトのアンドロイドウィジェット(Button、ProgressBar)に基づいていくつかの拡張UIコントロールを作成しました。ある時点で、カスタムコントロールでは、カスタムコントロールを含むビューと通信する必要があります。たとえば、ProgressBarの現在の値またはButtonの値を渡したいとします。 最良のアプローチは何ですか? ( "onClick"のような)カスタムイベントを作成し、コンテナクラスにハンドラを持たせることは可能ですか?それとももっと良いアプローチがありますか? ありがとうございます! ;)ビューに埋め込まれたカスタムビュー間の通信

+1

'View.getParent()'を使うことができます - このビューの親を取得し、それからsmthを呼び出します。しかし、質問は私のために少し奇妙に聞こえる.. –

答えて

0

イベントが発生したとき(ボタンを押したときなど)に「何らかのポイント」がある場合は、イベントリスナーインターフェイスを作成できます。私はOnClickListenerで行うように私はOnFlingListenerを実装することができます

private OnFlingListener flingListener; 

    // my event listener interface 
    public interface OnFlingListener { 
     public abstract boolean onFling(View v, int direction); 
    } 

    public void setOnFlingListener(OnFlingListener l) { 
     flingListener = l; 
    } 

    // ........my custom view code....... 

    // event handling now 
    private void flingRight() { 
     if(flingListener != null) { 
      if(flingListener.onFling(this, FLING_TO_RIGHT)) 
       showPrevious(); 
     } else { 
      showPrevious(); 
     } 
    } 

この方法:

は私のカスタムビューの内部で、私はこれを置きます。

EDIT:(flingRight()を参照)イベントを受け入れるか、またはキャンセルした場合、私はそこに決めたかったので

onFlingはブール値を返します。それはまた、無効を返す可能性があります。

関連する問題