Button按鈕設置點擊的四種監聽方式
注:加粗放大的都是改變的代碼
1.使用匿名內部類的形式進行設置
使用匿名內部類的形式,直接將需要設置的onClickListener接口對象初始化,內部的onClick方法會在按鈕被點擊的時候執行
第一個活動的java代碼:
1 packagecom.sanlian.buttontest;2
3 importandroid.content.Intent;4 importandroid.support.v7.app.AppCompatActivity;5 importandroid.os.Bundle;6 importandroid.view.View;7 importandroid.widget.Button;8
9 public class MainActivity extendsAppCompatActivity {10
11 @Override12 protected voidonCreate(Bundle savedInstanceState) {13 super.onCreate(savedInstanceState);14 setContentView(R.layout.activity_main);15 //通過id找到關聯布局中的view控件
16 Button btn =(Button) findViewById(R.id.btn);17 //給Button按鈕添加點擊的監聽
18 btn.setOnClickListener(newView.OnClickListener() {19 @Override20 //只要當前的設置的監聽器被觸發,這個方法就會被執行
21 public voidonClick(View v) {22 startActivity(new Intent(MainActivity.this,SecondAty.class));23 }24 });
25 }26 }
第一個活動的xml代碼:
1 <?xml version="1.0" encoding="utf-8"?>
2
3 xmlns:tools="http://schemas.android.com/tools"
4 android:layout_width="match_parent"
5 android:layout_height="match_parent"
6 android:paddingBottom="@dimen/activity_vertical_margin"
7 android:paddingLeft="@dimen/activity_horizontal_margin"
8 android:paddingRight="@dimen/activity_horizontal_margin"
9 android:paddingTop="@dimen/activity_vertical_margin"
10 tools:context="com.sanlian.buttontest.MainActivity"
11 >
12
13
15 android:layout_width="wrap_content"
16 android:layout_height="wrap_content"
17 android:text="點我"/>
18
第二個活動的java代碼:
1 packagecom.sanlian.buttontest;2
3 importandroid.support.v7.app.AppCompatActivity;4 importandroid.os.Bundle;5 importandroid.text.SpannableString;6 importandroid.text.style.StyleSpan;7 importandroid.text.style.TypefaceSpan;8 importandroid.widget.TextView;9
10 public class SecondAty extendsAppCompatActivity {11
12 @Override13 protected voidonCreate(Bundle savedInstanceState) {14 super.onCreate(savedInstanceState);15 setContentView(R.layout.activity_second_aty);16
17
18
19 }20 }
第二個活動的xml代碼:
程序運行結果截圖:
2.在xml文件中定義onClick屬性,java代碼中對應方法
在xml中定義onClick屬性。屬性中對應的值需要在java代碼中編寫對應的方法名。
注意:參數中的View必須-----》方法類似于:public void xxx(View v)
第一個活動的java代碼 :
1 packagecom.sanlian.buttontest;2
3 importandroid.content.Intent;4 importandroid.support.v7.app.AppCompatActivity;5 importandroid.os.Bundle;6 importandroid.view.View;7 importandroid.widget.Button;8
9 public class MainActivity extendsAppCompatActivity {10
11 @Override12 protected voidonCreate(Bundle savedInstanceState) {13 super.onCreate(savedInstanceState);14 setContentView(R.layout.activity_main);15 }16 public voidskip(View v){17 startActivity(new Intent(MainActivity.this,SecondAty.class));18 }19
20
21 }
第一個活動的xml代碼:
1 <?xml version="1.0" encoding="utf-8"?>
2
3 xmlns:tools="http://schemas.android.com/tools"
4 android:layout_width="match_parent"
5 android:layout_height="match_parent"
6 android:paddingBottom="@dimen/activity_vertical_margin"
7 android:paddingLeft="@dimen/activity_horizontal_margin"
8 android:paddingRight="@dimen/activity_horizontal_margin"
9 android:paddingTop="@dimen/activity_vertical_margin"
10 tools:context="com.sanlian.buttontest.MainActivity"
11 >
12
13
15 android:layout_width="wrap_content"
16 android:layout_height="wrap_content"
17 android:onClick="skip"
18 android:text="點我"/>
19
其他的和匿名內部類的方法一樣。
3.Activity 實現onClickListener接口
在給Button按鈕設置點擊的監聽的時候直接讓當前的Activity實現onClickListener接口,這樣傳入的監聽對象就可以直接使用當前Activity.this
第一個活動的java代碼:
1 packagecom.sanlian.buttontest;2
3 importandroid.content.Intent;4 importandroid.support.v7.app.AppCompatActivity;5 importandroid.os.Bundle;6 importandroid.view.View;7 importandroid.widget.Button;8
9 public class MainActivity extends AppCompatActivityimplementsView.OnClickListener {10
11 @Override12 protected voidonCreate(Bundle savedInstanceState) {13 super.onCreate(savedInstanceState);14 setContentView(R.layout.activity_main);15 //找到控件的id,也叫控件的初始化
16 Button btn =(Button) findViewById(R.id.btn);17 //給Button按鈕設置監聽
18 btn.setOnClickListener(this);19 }20
21
22
23 public voidonClick(View v) {24 //啟動另一個activity
25 startActivity(new Intent(MainActivity.this,SecondAty.class));26
27 //使用swith查找要點擊的按鈕的id
28 /*switch (v.getId()){29 case R.id.btn:30 startActivity(new Intent(MainActivity.this,SecondAty.class));31 break;32 default:33 break;34 }*/
35 }36 }
第一個活動的xml代碼:
1 <?xml version="1.0" encoding="utf-8"?>
2
3 xmlns:tools="http://schemas.android.com/tools"
4 android:layout_width="match_parent"
5 android:layout_height="match_parent"
6 android:paddingBottom="@dimen/activity_vertical_margin"
7 android:paddingLeft="@dimen/activity_horizontal_margin"
8 android:paddingRight="@dimen/activity_horizontal_margin"
9 android:paddingTop="@dimen/activity_vertical_margin"
10 tools:context="com.sanlian.buttontest.MainActivity"
11 >
12
13
15 android:layout_width="wrap_content"
16 android:layout_height="wrap_content"
17 android:text="點我"/>
18
其他的和第一個方法一樣
4.其他類實現onClickListener接口
讓另外一個類來實現onClickListener接口。這樣如果控件在需要設置點擊監聽的時候,直接傳入該類的對象即可。
第一個活動的java代碼:
1 packagecom.sanlian.buttontest;2
3 importandroid.content.Intent;4 importandroid.support.v7.app.AppCompatActivity;5 importandroid.os.Bundle;6 importandroid.util.Log;7 importandroid.view.View;8 importandroid.widget.Button;9
10 public class MainActivity extendsAppCompatActivity{11
12 @Override13 protected voidonCreate(Bundle savedInstanceState) {14 super.onCreate(savedInstanceState);15 setContentView(R.layout.activity_main);16 //找到控件的id,也叫控件的初始化
17 Button btn =(Button) findViewById(R.id.btn);18 Button btn2 =(Button) findViewById(R.id.btn2);19 //給Button按鈕設置監聽
20 myListener mylistener = newmyListener();21 btn.setOnClickListener(mylistener);22 btn2.setOnClickListener(mylistener);23 }24 class myListener implementsView.OnClickListener {25 @Override26 //參數v:就是觸發點擊的View控件。在這里就是被點擊了Button按鈕
27 public voidonClick(View v) {28 switch(v.getId()){29 caseR.id.btn:30 Log.i("TAG","你點擊了button1按鈕");31 break;32 caseR.id.btn2:33 Log.i("TAG","你點擊了button2按鈕");34 }3536 }37 }38
39 }
第一個活動的xml代碼:
1 <?xml version="1.0" encoding="utf-8"?>
2
3 xmlns:tools="http://schemas.android.com/tools"
4 android:layout_width="match_parent"
5 android:layout_height="match_parent"
6 android:paddingBottom="@dimen/activity_vertical_margin"
7 android:paddingLeft="@dimen/activity_horizontal_margin"
8 android:paddingRight="@dimen/activity_horizontal_margin"
9 android:paddingTop="@dimen/activity_vertical_margin"
10 tools:context="com.sanlian.buttontest.MainActivity"
11 >
12
13
15 android:layout_width="wrap_content"
16 android:layout_height="wrap_content"
17 android:text="點我"/>
18
19
21 android:layout_width="wrap_content"
22 android:layout_height="wrap_content"
23 android:text="點我"/>
24
25
26
實現的結果截圖: