2016-07-04 8 views
1
.... 
android:onClick = "activity1"; 
.... 

public void activity1(View view) 
{ 
..... 
} 

の型ビューのそのパラメータが、なぜあなたはすべてのビューにonClickListenerを設定することができはなぜのonClickメソッド

+1

なぜ存在しないのですか? –

+0

どのようなタイプがありますか?あなたがそれをあなたによく添付していないビューのタイプを得ると思ったら...それをタイプ、例えばTextview v =(TextView)ビューにキャストしてください。 – Memme

+1

複数のビューに対して同じリスナーを再利用できるため、どのリスナーをクリックしたかを理解する方法が必要な場合があります。 – Blackbelt

答えて

2

型ビューのこの関数のパラメータです。つまり、そのリスナーは、リスナーを設定する要素の種類がわからないことを意味します。

すべての要素は、extend ViewにonClickListenerを設定できるので、要素がViewであることがわかっているため、ビューが表示されます。

自分でクリックした要素を検出し、必要に応じて特定の要素にキャストできます。

0

さまざまなビューで同じonClickを使用できます。その場合、ビューはどのビューがクリックされたかを識別するために使用されます。例 については

android:onClick = "activity"

との3つのボタンがある場合は、この

public void activity(View view) 
{ 
    switch(view.getItemId()){ 

    case R.id.button1: 
    break; 
    case R.id.button2: 
    break; 
    case R.id.button3: 
    break; 

    } 
} 

今、あなたは3つの別のボタンに同じのonClickを使用することができますを行うことができます。

+0

これは 'activity(Button view)'だった場合でもうまくいくでしょう –

1

Viewはすべてのウィジェットの基本クラスであるため、アンドロイドは持っています。

たとえば、TextViewはViewを拡張し、ImageViewはビューを拡張します。

そして、あなたはあなたが複数の異なるビューの同じメソッドを使用することができることをgetItemIDなどだから、

0

のように、そこにビューが提供する基本的な機能を使用できるようになりましたビューV =新しいのTextView()

を書くことができます。 以下のコード

<Button 
    android:id="@+id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:onClick="onActivityClick" /> 

<Button 
    android:id="@+id/button2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:onClick="onActivityClick" /> 

<Button 
    android:id="@+id/button3" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:onClick="onActivityClick" /> 

今すぐあなたの活動方法onActivityClickだから基本的には複数のウィジェットに同じ方法を使用して、アプリケーション内のメソッドの数と余分なコードを保存することができます

public void onActivityClick(View view){ 
    switch (view.getId()){ 
     case R.id.button1: 
      //do something(); 
      break; 
     case R.id.button2: 
      //do something(); 
      break; 
     case R.id.button3: 
      //do something(); 
      break; 
    } 
} 

のようになります試してみてください。

これが役に立ちます。

関連する問題