Android按鈕實現點選事件的幾種方式
阿新 • • 發佈:2018-12-10
此方法整體看上去簡單易懂,個人比較常用
xml佈局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.button.MainActivity" > <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="按鈕" /> </LinearLayout>
java程式碼
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 找到按鈕控制元件 Button button = (Button) findViewById(R.id.button); // 匿名內部內方式設定點選事件 button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //在螢幕上顯示提示 Toast 吐司 Toast.makeText(MainActivity.this, "匿名內部內方式", Toast.LENGTH_SHORT).show(); } }); } }
在多個控制元件都需要實現事件監聽時,可見將匿名物件抽取出來,避免多次建立物件佔用資源
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 1.找到按鈕控制元件 Button button = (Button) findViewById(R.id.button); // 3.設定按鈕點選事件 button.setOnClickListener(onClickListener); } // 2.得到 OnClickListener 物件 OnClickListener onClickListener = new OnClickListener() { @Override public void onClick(View v) { // 可以使用 switch 通過匹配控制元件id 設定不同的按鈕提示不同內容 // view.getId() 得到點選的控制元件的id switch (v.getId()) { case R.id.button: Toast.makeText(MainActivity.this, "可以使用設定不同內容", Toast.LENGTH_SHORT).show(); break; case 2: // 省略 break; default: break; } } }; }
二.實現OnClickListener介面重寫onClick方法
此方法適合用於多個控制元件實現點選事件監聽
public class MainActivity extends Activity implements OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 1.找到按鈕控制元件
Button button = (Button) findViewById(R.id.button);
// 3.按鈕設定點選事件
button.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// 2.實現OnClickListener介面,然後重寫onClick方法
Toast.makeText(MainActivity.this, "實現OnClickListener", Toast.LENGTH_SHORT).show();
}
}
此方法也可以自己建立一個類實現 OnClickListener介面
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 1.找到按鈕控制元件
Button button = (Button) findViewById(R.id.button);
// 3.按鈕設定點選事件
button.setOnClickListener(new myOnclickLister());
}
// 2.自己建立類實現OnClickListener介面,然後重寫onClick方法
class myOnclickLister implements OnClickListener {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "實現OnClickListener", Toast.LENGTH_SHORT).show();
}
}
}
三.XML種設定按鈕的OnClick屬性
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.button.MainActivity" >
<Button
android:onClick="btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="按鈕" />
</LinearLayout>
然後在java程式碼種建立onClick屬性對應名字的方法
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
//定義與XML種OnClick屬性名字對應的方法 注意在方法引數種加上 View v
public void btn(View v) {
Toast.makeText(MainActivity.this, "設定Onclick屬性", Toast.LENGTH_SHORT).show();
}
}
此方法雖然挺方便,程式碼簡潔,但因為方面命名問題不易讓他人讀懂,且在多個控制元件種不方法使用。