Android プログラミングを学習する多くの人は、コードの記述方法について人によって好みが異なることに気づくでしょう。最も明らかなのは、イベントに応答するコントロールの記述方法が異なることです。そこで、この記事では、これらの記述方法をまとめ、さまざまな記述方法のメリットとデメリットを比較し、皆様が柔軟にエンコード方法を選択する際の参考になれば幸いです。
xml ファイルのコードは次のとおりです:
<Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button1" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button2" />
4 つのメソッドは次のように説明されます:
匿名内部クラス:
public class TestButtonActivity extends Activity { Button btn1, btn2; Toast tst; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test_button); btn1 = (Button) findViewById(R.id.button1); btn2 = (Button) findViewById(R.id.button2); btn1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Toast tst = Toast.makeText(TestButtonActivity.this, "111111111", Toast.LENGTH_SHORT); tst.show(); } }); btn2.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Toast tst = Toast.makeText(TestButtonActivity.this, "222222222", Toast.LENGTH_SHORT); tst.show(); } }); } }
カスタム クリック イベント リスニング クラス:
public class TestButtonActivity extends Activity { Button btn1, btn2; Toast tst; class MyClickListener implements OnClickListener { @Override public void onClick(View v) { // TODO Auto-generated method stub switch (v.getId()) { case R.id.button1: tst = Toast.makeText(TestButtonActivity.this, "111111111", Toast.LENGTH_SHORT); tst.show(); break; case R.id.button2: tst = Toast.makeText(TestButtonActivity.this, "222222222", Toast.LENGTH_SHORT); tst.show(); break; default: break; } } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test_button); btn1 = (Button) findViewById(R.id.button1); btn2 = (Button) findViewById(R.id.button2); btn1.setOnClickListener(new MyClickListener()); btn2.setOnClickListener(new MyClickListener()); } }
Activity は View.OnClickListener を継承し、Activity は OnClick(View view ) メソッドで、OnClick (View view) メソッドで switch-case を使用して、異なる ID で表されるボタンをそれに応じて処理します
public class TestButtonActivity extends Activity implements OnClickListener { Button btn1, btn2; Toast tst; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test_button); btn1 = (Button) findViewById(R.id.button1); btn2 = (Button) findViewById(R.id.button2); btn1.setOnClickListener(this); btn2.setOnClickListener(this); } @Override public void onClick(View v) { // TODO Auto-generated method stub switch (v.getId()) { case R.id.button1: tst = Toast.makeText(this, "111111111", Toast.LENGTH_SHORT); tst.show(); break; case R.id.button2: tst = Toast.makeText(this, "222222222", Toast.LENGTH_SHORT); tst.show(); break; default: break; } } }
最後の方法は、今日見た方法です。XML ファイルで「指定されたボタンの onClick 属性を表示し、そのため、ボタンがクリックされると、対応するアクティビティの click() メソッドがリフレクションを使用して呼び出されます。」
<Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="onClick" android:text="Button1" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="onClick" android:text="Button2" />
ここで、「android:」と入力した後に Alt+/ を押すと、onClick 属性のプロンプトが表示されますが、 android:onClick = と入力して Alt+/ を押しても onClick オプションが表示されず、急に何か問題があるような気がしました
public class TestButtonActivity extends Activity { Button btn1, btn2; Toast tst; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test_button); } // 注意 这里没有 @Override 标签 public void onClick(View v) { // TODO Auto-generated method stub switch (v.getId()) { case R.id.button1: tst = Toast.makeText(this, "111111111", Toast.LENGTH_SHORT); tst.show(); break; case R.id.button2: tst = Toast.makeText(this, "222222222", Toast.LENGTH_SHORT); tst.show(); break; default: break; } } }
この書き方だと、ボタンを宣言せずにボタンのクリックイベントを実現できます。コード全体
上記はボタン クリック イベントを実装する 4 つの方法です
大まかにまとめると、デモ テストやログイン インターフェイスを作成する場合など、ボタンが少ない場合は匿名内部クラスを使用する方が高速です。
ボタンが多い場合は今でも3番目の方法が便利です
4番目の方法が一番便利だと思いますが、コードをたくさん読んだ後では、まだ書き方が不十分だと感じます。これを学ぶことで多くのメリットがあると信じています
この記事が皆さんの Android プログラミングの学習に役立つことを願っています
Android ボタンのクリック イベントを記述する 4 つの一般的な方法をまとめたその他の関連記事については、 PHP 中国語 Web サイトにご注意ください