Header ads

Header ads
» » Click in XML

Xử lý sự kiện trong Layout (Handle event in Layout)

Khi bạn tạo một View trong layout, bất kỳ layout nào cũng sẽ có thuộc tính như sau: android:onClick=”EventName“ ,  EventName ở đây chính là tên sự kiện, khi người dùng tương tác với view và nó sẽ bắt sự kiện tương ứng với view đó dựa vào ID.

Đây là một view định nghĩa trong layout:

  <Button          android:id="@+id/btnLogin"          android:layout_width="wrap_content"          android:layout_height="wrap_content"          android:layout_alignParentLeft="true"          android:layout_alignParentTop="true"          android:onClick="clickMe"          android:layout_marginTop="52dp"          android:text="Login" />  

Sau đó ở MainActivity sẽ bắt sự kiện như sau:

  package hiepsiit.com;    import android.app.Activity;  import android.os.Bundle;  import android.view.Menu;  import android.view.MenuItem;  import android.view.View;  import android.widget.Toast;    public class MainActivity extends Activity {    	@Override  	protected void onCreate(Bundle savedInstanceState) {  		super.onCreate(savedInstanceState);  		setContentView(R.layout.activity_main);  	}    	@Override  	public boolean onCreateOptionsMenu(Menu menu) {  		// Inflate the menu; this adds items to the action bar if it is present.  		getMenuInflater().inflate(R.menu.main, menu);  		return true;  	}  // Thêm sự kiện tại đây có tham số là View  	public void clickMe(View v){  		// Hiện thị thông báo trong vòng vài giây  		Toast.makeText(getApplication(), "Hiệp Sĩ IT: Bạn đang Click vào Butto Login", Toast.LENGTH_LONG).show();  	}  	@Override  	public boolean onOptionsItemSelected(MenuItem item) {  		// Handle action bar item clicks here. The action bar will  		// automatically handle clicks on the Home/Up button, so long  		// as you specify a parent activity in AndroidManifest.xml.  		int id = item.getItemId();  		if (id == R.id.action_settings) {  			return true;  		}  		return super.onOptionsItemSelected(item);  	}  }  

Ở file layout mình đã khai báo một sự kiện onClick có tên là “clickMe luôn, và trong class MainActivity mình khai báo một phương thức có tên public void clickMe(View v), ở đây các bạn muốn nó bắt sự kiện cho nút button thì bắt buộc phương thức khai báo phải trùng tên với tên onClick trong file layout.

Ở đây mình đã khi báo giống nhau rồi nhé, nhớ tham số truyển vào phương thức là View nhé chứ không có là lỗi ngay.Ngoài ra trong trường hợp có nhiều nút View gán cùng tên sự kiện thì bạn sẽ bắt theo ID như sau:

  <RelativeLayout 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"      android:paddingBottom="@dimen/activity_vertical_margin"      android:paddingLeft="@dimen/activity_horizontal_margin"      android:paddingRight="@dimen/activity_horizontal_margin"      android:paddingTop="@dimen/activity_vertical_margin"      tools:context="hiepsiit.com.MainActivity" >    <Button      android:id="@+id/btnLogout"      android:layout_width="wrap_content"      android:layout_height="wrap_content"      android:layout_alignBaseline="@+id/btnLogin"      android:layout_alignBottom="@+id/btnLogin"      android:layout_centerHorizontal="true"      android:onClick="clickMe"      android:text="Logout" />    <Button      android:id="@+id/btnLogin"      android:layout_width="wrap_content"      android:layout_height="wrap_content"      android:layout_alignParentLeft="true"      android:layout_alignParentTop="true"      android:layout_marginLeft="21dp"      android:onClick="clickMe"      android:text="Login" />    </RelativeLayout>  

Và đây là các bắt sự kiện cho 2 nút button có chung tên sự kiện clickMe:

  // Thêm sự kiện tại đây có tham số là View  	public void clickMe(View v){  		// kiem tra bằng dùng phương thức getID() của view so sánh với id của button  		switch(v.getId()){  		case R.id.btnLogin:  			// Hiện thị thông báo trong vòng vài giây  			Toast.makeText(getApplication(), "Hiệp Sĩ IT: Bạn đang Click vào Button Login", Toast.LENGTH_LONG).show();  			break;  		case R.id.btnLogout:  			Toast.makeText(getApplication(), "Hiệp Sĩ IT: Bạn đang Click vào Button Logout", Toast.LENGTH_LONG).show();  			break;  		}  	}

Toàn bộ code trong MainActivity.java:

  package hiepsiit.com;    import android.app.Activity;  import android.os.Bundle;  import android.view.Menu;  import android.view.MenuItem;  import android.view.View;  import android.widget.Toast;    public class MainActivity extends Activity {    	@Override  	protected void onCreate(Bundle savedInstanceState) {  		super.onCreate(savedInstanceState);  		setContentView(R.layout.activity_main);  	}  	  // Thêm sự kiện tại đây có tham số là View  	public void clickMe(View v){  		// kiem tra bằng dùng phương thức getID() của view so sánh với id của button  		switch(v.getId()){  		case R.id.btnLogin:  			// Hiện thị thông báo trong vòng vài giây  			Toast.makeText(getApplication(), "Hiệp Sĩ IT: Bạn đang Click vào Button Login", Toast.LENGTH_LONG).show();  			break;  		case R.id.btnLogout:  			Toast.makeText(getApplication(), "Hiệp Sĩ IT: Bạn đang Click vào Button Logout", Toast.LENGTH_LONG).show();  			break;  		}  	}  	  }  

Download ví dụ

Ứng dụng này được phát triển bởi adt bundleandroid 4.2 sử dụng minimum sdk 11  and target sdk 21.


Kết quả khi click vào button Login:

Kết quả khi click vào button Logout:



Cập nhật công nghệ từ Youtube tại link: https://www.youtube.com/channel/UCOxeYcvZPGf-mGLYSl_1LuA/videos
Để tham gia khóa học công nghệ truy cập link: http://thuvien.hocviendaotao.com
Mọi hỗ trợ về công nghệ email: dinhanhtuan68@gmail.com

About Học viện đào tạo trực tuyến

Xinh chào bạn. Tôi là Đinh Anh Tuấn - Thạc sĩ CNTT. Email: dinhanhtuan68@gmail.com .
- Nhận đào tạo trực tuyến lập trình dành cho nhà quản lý, kế toán bằng Foxpro, Access 2010, Excel, Macro Excel, Macro Word, chứng chỉ MOS cao cấp, IC3, tiếng anh, phần mềm, phần cứng .
- Nhận thiết kế phần mềm quản lý, Web, Web ứng dụng, quản lý, bán hàng,... Nhận Thiết kế bài giảng điện tử, số hóa tài liệu...
HỌC VIỆN ĐÀO TẠO TRỰC TUYẾN:TẬN TÂM-CHẤT LƯỢNG.
«
Next
Bài đăng Mới hơn
»
Previous
Bài đăng Cũ hơn