2016-12-07 13 views
0

Androidでは、たとえばonClick()という機能をボタンに書き込んで、その機能にリンクすることができます。しかし、ほとんどの時間私はそれをやっていない人が表示されますが、onClickListenerをボタンにJavaファイルで有効にしています。
なぜですか?両者の違いは何ですか?あなたがそれらの1つを使用することが許されない場合がありますか?JavaファイルのonClick関数を使用してXMLファイルのonClick()を書くリスナーとの違いは何ですか?

+0

コードで 'onClick'リスナーを宣言すると、より読みやすくなります。ハンドリングメソッドがどこから呼び出されたかを簡単に確認できます。ハンドリングメソッドがXMLでのみ設定されている場合は、未使用として。 –

答えて

0

機能的にはどちらかを使用することができ、どちらも同じことを行います。どちらを使用するかは制限されていませんが、Javaコードの方が柔軟性があり、必要に応じてより多くの機能を追加できるため、多くの開発者がJavaコードの使用を推奨します。場合によっては、人々がXMLファイルに非常に基本的なメソッド呼び出しを追加して、必要なすべてを実行するJavaメソッドにリンクすることがあります。

全体的には、好みとコーディングスタイルの問題です。

2

短い説明:XMLを介し

onClickは、あなたのコード内のfixed実装のために良いですが、OnClickListenerを使用すると、複数のUI要素や複雑なUIの流れと複雑なアプリケーション構造のためのより良いですが、両者はまったく同じことを行いますもの。

詳細:

あなたはレイアウトを経てonClickを設定し、LayoutInflator setContentView によって開始は景色コードによって管理尊敬ビューコンストラクタ&にこの属性を渡します。

しかし、OnClickListenerを使用すると、複雑なアプリの構造に関するクリックイベント管理のコントロールの動作を変更できます。以下は

内部実装自体はsetOnClickListenerを使用していますので、私は上記のように、両方が同じである 、XMLのonClickオプションを使用すると、アプリはシンプルである場合にのみ、良いです

case R.styleable.View_onClick: 
        if (context.isRestricted()) { 
         throw new IllegalStateException("The android:onClick attribute cannot " 
           + "be used within a restricted context"); 
        } 

        final String handlerName = a.getString(attr); 
        if (handlerName != null) { 
         setOnClickListener(new DeclaredOnClickListener(this, handlerName)); 
        } 

onClick属性の内部実装のスナップですそれ以外の場合はListenerを使用します。