閱讀138 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Android開發20——單個監聽器監聽多個按鈕點擊事件

一、單個按鈕點擊事件的監聽

 

方法一

/**
 * 從網絡上獲取圖片
 * 
 * @author 徐越
 * 
 */
public class MainActivity extends Activity
{
	private EditText txtPath;
	private Button btnShowImage;
	private ImageView imgView;

	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		txtPath = (EditText) this.findViewById(R.id.txtPath);
		btnShowImage = (Button) this.findViewById(R.id.btnShowImage);
		imgView = (ImageView) this.findViewById(R.id.imgView);
		btnShowImage.setOnClickListener(new ShowImageListener());
	}

	private final class ShowImageListener implements View.OnClickListener
	{
		@Override
		public void onClick(View v)
		{
			// 圖片路徑
			String path = txtPath.getText().toString();
			try
			{
				// 獲取圖片的二進製數據
				byte[] imgdata = ImageService.getImage(path);
				// 利用Bitmap工廠生成Bitmap
				Bitmap bitmap = BitmapFactory.decodeByteArray(imgdata, 0, imgdata.length);
				// imageView接收Bitmap並顯示
				imgView.setImageBitmap(bitmap);
			}
			catch (Exception e)
			{
				Toast.makeText(MainActivity.this, "讀取圖片失敗", Toast.LENGTH_SHORT).show();
			}
		}
	}
}


方法二

在布局頁麵中給該按鈕加上android:onClick="showImage",然後再顯示該元素的Activity中加入showImage(View v)的方法,在該方法中進行操作。

 

 

二、多個按鈕點擊事件的監聽

 

方法一

在Activity中按照第一個大標題的方法,給每個按鈕寫一個監聽類或者監聽方法。

 

方法二

利用一個監聽器監聽所有按鈕的點擊事件

/**
 * 查詢號碼歸屬地
 * 
 * @author 徐越
 * 
 */
public class MainActivity extends Activity implements View.OnClickListener
{
	private EditText txtPhone;
	private TextView lblAddress;
	private Button btnQuery;
	private Button btnReset;
	private CallAddressQueryService callAddressQueryService = new CallAddressQueryService();
	private final int CLICK_QUERY = 1;
	private final int CLICK_RESET = 2;

	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		lblAddress = (TextView) this.findViewById(R.id.lblAddress);
		txtPhone = (EditText) this.findViewById(R.id.txtPhone);
		btnQuery = (Button) this.findViewById(R.id.btnQuery);
		btnReset = (Button) this.findViewById(R.id.btnReset);
		btnQuery.setOnClickListener(this);
		btnQuery.setTag(CLICK_QUERY);
		btnReset.setOnClickListener(this);
		btnReset.setTag(CLICK_RESET);
	}

	@Override
	public void onClick(View v)
	{
		int tag = (Integer) v.getTag();
		switch (tag)
		{
			case CLICK_QUERY:
				query();
				break;
			case CLICK_RESET:
				reset();
				break;
		}
	}

	public void query()
	{
		String phone = txtPhone.getText().toString();
		try
		{
			lblAddress.setText("查詢中");
			String address = callAddressQueryService.getCallAddress(phone);
			lblAddress.setText(address);
		}
		catch (Exception e)
		{
			e.printStackTrace();
			Toast.makeText(this, "查詢失敗", Toast.LENGTH_LONG).show();
		}
	}

	public void reset()
	{
		txtPhone.setText("");
		lblAddress.setText("");
	}
}

 

最後更新:2017-04-04 07:03:05

  上一篇:go Android開發20——單個監聽器監聽多個按鈕點擊事件
  下一篇:go php之MVC簡單介紹