web-dev-qa-db-ja.com

OnClick()イベントとOnClickListenerの違いは?

ほとんどのプロジェクトで常にonclick()イベントを使用しています。しかし、私はOnClickListener()について読みました。これら2つの違いは誰かわかりますか?そして、Androidアプリケーション?で使用するのに最適なのはどれですか?.

21
Praveenkumar

質問が明確かどうかはわかりません。 _View.OnClickListener_は、onClick(View)メソッドを定義するインターフェースです。クリックをリッスンすることを目的としたクラスがある場合は、インターフェイスを実装する必要があり(まだ拡張していない場合)、このメソッドも実装する必要があります。両方を使用する必要があります。それらはどういうわけか代替ではありません。

28
Sean Owen

OnClickListenerは実装する必要のあるインターフェースであり、Javaコードでビューに設定できます。

最近Android Android:onclickと呼ばれるビューにxml属性が追加されました。これを使用すると、インターフェースを実装しなくても、ビューのアクティビティでクリックを直接処理できます。

どちらも同じように機能しますが、一方はJavaコードを介して設定され、もう一方はxmlコードを介して設定されます。

24
Ronnie

onClickによって、XMLレイアウトで定義するものを使用すると想定しています。これら2つは、同じ機能を提供しますが、実装が異なる代替手段です。

  1. XMLレイアウトの関数バインディングを使用したonClickは、onClickとそれが呼び出す関数の間のバインディングです。 onClickが機能するためには、関数に1つの引数(View)が必要です。

  2. OnClickListenerは、どのクラスでも実装できるインターフェースです。これはどのクラスでも実装できるインターフェースであるため、その形式はより柔軟性があり、より複雑です。 OnClickListenerで持つことができるいくつかの柔軟性

    • 必要に応じて、あるリスナー実装を別のリスナー実装と簡単に交換できます。
    • OnClickListenerを使用すると、クリックイベントのアクション/動作を、イベントをトリガーするViewから分離できます。単純な場合はそれほど大したことではありませんが、複雑なイベント処理の場合は、コードの可読性と保守性が向上する可能性があります。
    • OnClickListenerはインターフェースであるため、それを実装するクラスには、イベントを処理するために必要なインスタンス変数とメソッドを決定する際の柔軟性があります。繰り返しますが、これは単純なケースでは大したことではありませんが、複雑なケースでは、イベント処理に関連する変数/メソッドを、イベントをトリガーするビューのコードと混同する必要はありません。
21
momo

OnClickListenerは、誰かが実際にクリックするのを待つものであり、onclickは、誰かがクリックしたときに何が起こるかを決定します

リスナーはクラスであり、onclickはメソッドであり、この区別は単純なケースではあまり役に立ちませんが、より複雑にしたい場合はさらに必要になります

11
Hayk Saakian
Button button = (Button)findViewById(R.id.buttonId);
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // Do stuff
    }
});

OnClickListenerはインターフェースであり、onClickOnClickListenerのメソッドです。

5
Shweta Nandha

プログラムでOnClickListenerを設定する理由はいくつかあります。 1つ目は、アプリの実行中にボタンの動作を変更したい場合です。ボタンを別のメソッドに完全に向けることも、何もしないOnClickListenerを設定してボタンを無効にすることもできます。

onClick属性を使用してリスナーを定義すると、ビューはそのホストアクティビティでのみその名前のメソッドを探します。プログラムでOnClickListenerを設定すると、ホストアクティビティ以外の場所からボタンの動作を制御できます。これはFragmentsに非常に関連するようになります。ボタンはアクティビティではなく、定義されたリスナーが検索されないため、Fragmentsは常にOnClickListenersを使用してボタンを制御する必要があります。 onClickで。

0
Zohra Khan

プログラムでOnClickListenerを設定する理由はいくつかあります。 1つ目は、アプリの実行中にボタンの動作を変更したい場合です。ボタンを別のメソッドに完全に向けることも、何もしないOnClickListenerを設定してボタンを無効にすることもできます。

onClick属性を使用してリスナーを定義すると、ビューはそのホストアクティビティでのみその名前のメソッドを探します。プログラムでOnClickListenerを設定すると、ホストアクティビティ以外の場所からボタンの動作を制御できます。これは、基本的にミニアクティビティであるフラグメントについて説明するときに非常に重要になります。これにより、独自のライフサイクルでビューの再利用可能なコレクションを構築し、アクティビティにまとめることができます。フラグメントはアクティビティではないため、ボタンを制御するには常にOnClickListenersを使用する必要があり、onClickで定義されたリスナーは検索されません。

0
EngFadyFawzi

XMLにAndroid:onClick="your_method"属性を追加できます。

例:

 <Button
  Android:layout_width="wrap_content"
  Android:layout_height="wrap_content"
  Android:text="Click"
  Android:onClick="your_method"/>
0
Muskovets

プログラムでOnClickListenerを設定する理由はいくつかあります。 1つ目は、アプリの実行中にボタンの動作を変更したい場合です。ボタンを別のメソッドに完全に向けることも、何もしないOnClickListenerを設定してボタンを無効にすることもできます。

OnClick属性を使用してリスナーを定義すると、ビューはそのホストアクティビティでのみその名前のメソッドを探します。プログラムでOnClickListenerを設定すると、ホストアクティビティ以外の場所からボタンの動作を制御できます。これは、基本的にミニアクティビティであるフラグメントについて学習するときに非常に重要になります。これにより、独自のライフサイクルを持つビューの再利用可能なコレクションを構築し、アクティビティにまとめることができます。フラグメントはアクティビティではないため、ボタンを制御するために常にOnClickListenersを使用する必要があり、onClickで定義されたリスナーは検索されません。

0
user6474469

onclick()setOnClicklisner()の主な違いは次のように説明されます。

  1. onclick()
    xmlの属性です。ボタンがクリックされたときにonclickメソッドが呼び出され、レイアウトに3つのボタンがあるとすると、onclick()の関数を1つだけ追加でき、1つのボタンのいずれかがクリックされたときにonclick()呼び出されます

  2. setOnClicklistner()
    レイアウトに3つのボタンがあり、それらとは異なるアクションを実行するとします。次に、各ボタンでsetonClicklistner()メソッドを使用して、ボタンに異なるメソッドを指定する必要があります

0
mani ali

「OnClickListener」は、ユーザーがアプリのボタンをクリックするのを待っている人だと考えてください。次に、あなたの男はあなたのメソッドを実行しますOnClick()

XmlファイルのボタンにIDを入力してから、MainActivity.Javaファイルで名前を付ける必要があります。次に、クリックリスナーをあなたの男に設定します。そして、onClickメソッドを追加します。これが、onClickがインターフェースView.OnClickListenerにバインドされている理由です: https://developer.Android.com/reference/Android/view/View.OnClickListener.html

例:

Button myButton = (Button)findViewById(R.id.myButton);
myButton.setOnClickListener(new View.OnClickListener(){
    @override
    public void onClick(View v) {
        // your method...
    }
}
0
Marina ES

Javaコードのボタンにクリックリスナーを追加する場合は、OnClickListenerを使用します。
レイアウトファイルのボタンにクリックリスナーを追加する場合は、Android:onClick="your_method"を使用します。
XMLバリアントを使用する場合は、アプリクラスにyour_methodを実装する必要があります。

0
Muskovets

誰もがいつも使っていたOnClickListenerlistnerについて言及しました。もう1点追加したいAndroid:onClickはメソッドとして機能し、参照する必要がないため、タスクの実行後にボタンを追加する必要があり、OnClickListenerで参照できない場合に便利です。

exampleの場合、レイアウトのみ(フラグメントなし)でビューページャーを作成すると、任意のレイアウトにボタンを配置すると、レイアウトが表示されている場合にのみインシアル化されるため、その中でButtonのメソッドfindViewByIdを使用できませんケースAndroid:onClickそのメソッドをアクティビティに入れるだけで便利になりました!!

0
Arjun

ここに簡単な用語があります。uが家にいて、Uが誰かに電話をかけたい場合、uは直接電話をかけ、彼らはuを聞くことができます。 (onclickを使用)。ただし、外にいて自宅の誰かに電話をかけたい場合は、電話またはインターネットを使用する必要があります(onclicklistenerを使用する必要があります)。 Androidすべては自宅から始まります。つまりmain_activityです。これが方法ですAndroid年の作業が簡単になります。アクティビティが1つある場合は、リスナーをアタッチする必要はありません。 、オブジェクトを作成し、それを定義します。onClickを使用するだけです。Onclicklistenerは通常フラグメントで使用されます。したがって、コーディングを続けてください。

0
Shivendra Singh

XmlではOnClickを使用し、OnClickListnerコードではJavaを使用します。どちらも機能を実行するために使用されます。

を使用しております

    public void button_onClick_name(View v)
{
-------
}

クラス外のメソッドを定義します。ただし、クラス内でコンポーネントのClickイベントを定義するには、onclickリスナーを使用します。

0
Pattabi Raman