0

私は Android と Java の一般的なコーディングの初心者であり、これまでさまざまなチュートリアルで、クリックされたボタンを処理する 2 つの方法を見つけました。

最初の1つ:

button.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                //do your thing
            }
        });

2 つ目はandroid:onClick="someMethod"、ボタンのプロパティを main.xml に配置someMethodし、アクティビティでメソッドを作成するだけです。

これら2つのアプローチの違いは何だろうと思っていました。あるものは別のものよりも優れていますか?それとも微妙に違う働きをするだけですか?私には、彼らは同じことをしているように見えます:P

感謝!

4

4 に答える 4

1

これら2つのアプローチの違いは何だろうと思っていました。あるものは別のものよりも優れていますか?

結果は同じです。しかし、違いはコードの読みやすさにあります。

android:onClick="someMethod"

このアプローチはお勧めしません。

上記のように使用することをお勧めしますanonymous classes

また、クラスはたとえば実装でき、メソッドView.OnClickListenerを実装するだけでよくonClick()、多くのウィジェットに対して1つのメソッドを持つことができます。

public class Main extends Activity implements View.OnClickListener {
   public void onClick(View view) {
      switch(view.getId()) {
         case R.id.startBtn:
            // do some work
         break;
         case R.id.anotherWidgetId:
            // do some work
         break;
      }
   }
}

これも良い習慣だと思います。メソッドは1つだけで、コードの行数は少なく、クリーンです。

于 2012-06-27T17:27:26.277 に答える
0

android:onClick="someMethod" を使用すると、メソッドはクリックされたビューを保持するアクティビティにあります。これをリスト アイテムで使用している場合は、(場合によっては) クリックをアクティビティで処理する方が便利です。匿名クラスのアプローチを使用する場合は、アダプターに設定する必要がありますが、これは常にアクティビティにアクセスできるとは限りません (そうであれば、面倒になる可能性があります..)。したがって、リストを保持している (クリック可能なアイテムを保持している) アクティビティからのものが必要な場合は、android:onClick アプローチを使用する方がクリーンになると思います。

それ以外は - ほとんど同じです。後でソースを追跡するのが難しい場合があるため、android:onClick で呼び出すメソッドを必ず文書化してください。

于 2012-06-28T00:51:29.897 に答える
0

Androidボタンのダブルクリックを処理するには

// These variables as global
private final static long DOUBLE_CLICK_INTERVAL=250;
private static boolean doubleClick=false;
private static long lastClickTime=0;    
private static Handler handler;

// In button method
long clickTime=SystemClock.uptimeMillis(); 

if(clickTime-lastClickTime <= DOUBLE_CLICK_INTERVAL) { // If double click...

    Toast.makeText(getApplicationContext(), "Double Click Event",Toast.LENGTH_SHORT).show();
    doubleClick=true;

} else { // If not double click....

    doubleClick=false;
    handler=new Handler();
    handler.postDelayed(new Runnable(){
        @Override
        public void run(){
            if(!doubleClick){
                Toast.makeText(getApplicationContext(),"Single Click Event",Toast.LENGTH_SHORT).show();
            }                   
        }
    }, DOUBLE_CLICK_INTERVAL);      
}

lastClickTime=clickTime; 
于 2013-09-18T10:42:42.377 に答える
0

最初のもの:ボタンを押すたびに呼び出されるメソッドを実用的に定義しています。2 つ目: ボタンが押されたときに呼び出されるアクティビティのメソッド名について言及しています。

クリックリスナーをどのように設定するかは、好みに完全に依存します。

個人的には、クリック リスナーを実用的に設定するのが好きです。これにより、コードを実行しながら、ボタンの onClick でどのコードが実行されるかがわかります。

于 2012-06-27T16:58:25.670 に答える