一個用戶的操作會被傳遞到不同的前端物件的不同監聽方法處理,任何一個接收並處理了該次事件的方法如果在處理完後返回了 true,那麼該次 event 就算被完全處理了,其他的 View 或者監聽方法就不會再有機會處理該 event 了。
接續上一篇的內容:按一下 的事件處理範例
※下面得範例將要在長按按鈕後,將計數值歸0: MainActivity.java
package tw.mangolai.counter2;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
//匯入監聽器介面
import android.view.View.OnClickListener;
//匯入監聽器介面
import android.view.View.OnLongClickListener;
import android.widget.Button;
import android.widget.TextView;
//實作 OnLongClickListener介面
public class MainActivity extends Activity implements OnClickListener, OnLongClickListener {
TextView txv; //用來參照 textView1 元件的變數
Button btn; //用來參照 button1 元件的變數
int counter = 0; //用來儲存計數的值, 初值為 0
@Override
//實作監聽器介面中定義的 onClick方法
public void onClick(View v) { // 實作監聽器介面中定義的 onClick方法
// 將計數值加 1, 然後轉成字串顯示出來
txv.setText(String.valueOf(++counter)+"顆鑽石");
}
@Override
//實作長按 (OnLongClickListener 介面)的方法
public boolean onLongClick(View v) {
counter = 0;
txv.setText("0"+"顆鑽石");
return true;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//找出要參照的物件
txv = (TextView) findViewById(R.id.textView1);
//找出要參照的物件
btn = (Button) findViewById(R.id.button1);
//登錄監聽物件, this表示活動物件本身
btn.setOnClickListener(this);
//將活動物件登錄為按鈕的長按監聽器
btn.setOnLongClickListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
沒有留言:
張貼留言