Android筆記——Button點擊事件幾種寫法,androidbutton
Button點擊事件:大概可以分為以下幾種:
首先我們簡單地定義一個帶Button的xml布局檔案
activity_main.xml:
<Button android:id="@+id/bt1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="點擊事件" />
然後再寫Java代碼
MainActivity.java:
1.匿名內部類
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); bt = (Button) findViewById(R.id.bt1); //1.匿名內部類 bt.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Log.i("匿名內部類", "點擊事件"); } });
}
2.定義內部類,實現OnClickListener介面
public class MainActivity extends Activity{ private Button bt; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); bt = (Button) findViewById(R.id.bt); bt.setOnClickListener(new MyListener()); } //定義內部類,實現OnClickListene介面 class MyListener implements OnClickListener{ @Override public void onClick(View v) { // TODO Auto-generated method stub Log.i("定義內部類,實現OnClickListene介面", "點擊事件"); } }
}
3.定義的構造方法
public class MainActivity extends Activity{ private Button bt; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); bt = (Button) findViewById(R.id.bt); myListener(); } //定義構造方法 private void myListener() { // TODO Auto-generated method stub bt.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Log.i("定義構造方法", "點擊事件"); } }); }}
4.用Activity實現OnClickListener介面
public class MainActivity extends Activity implements OnClickListener { private Button bt; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); bt = (Button) findViewById(R.id.bt); bt.setOnClickListener(this); } //用Activity實現OnClickListener介面 @Override public void onClick(View v) { // TODO Auto-generated method stub Log.i("用Activity實現OnClickListener介面", "點擊事件"); } }
5.指定Button的onClick的屬性:
先在layout檔案中指定onClick屬性,然後到Activity中實現這個onButtonClick方法
布局檔案:
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="click" android:text="點擊事件" />
Java代碼:
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } //5指定onClick屬性方式 public void click(View v) { // TODO Auto-generated method stub Log.i("指定onClick屬性方式","點擊事件"); }}
另外,多個按鈕點擊的話,也可以指定onClick屬性方式,擷取其資源id。通過其資源id,可以判斷使用者點擊了哪個按鈕了。
布局檔案:
<Button android:id="@+id/bt1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="click" android:text="點擊事件1" /> <Button android:id="@+id/bt2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="click" android:text="點擊事件2" /> <Button android:id="@+id/bt3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="click" android:text="點擊事件3" />/> <Button android:id="@+id/bt4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="click" android:text="點擊事件4" />
Java代碼:
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } //指定onClick屬性方式 //傳人的View對象,就是使用者按下的那個按鈕對象 public void click(View v) { // TODO Auto-generated method stub //擷取組件的資源id int id = v.getId(); switch (id) { case R.id.bt1: Log.i("指定onClick屬性方式","bt1點擊事件"); break; case R.id.bt2: Log.i("指定onClick屬性方式","bt2點擊事件"); break; case R.id.bt3: Log.i("指定onClick屬性方式","bt3點擊事件"); break; case R.id.bt4: Log.i("指定onClick屬性方式","bt4點擊事件"); break; default: break; } }}
效果