1
我有一段代碼爲幾個TextView
對象設置一個OnClickListener
。但是,當我點擊其中一個對象時,它將執行與列表中顯示在其下的所有其他TextView
對象關聯的所有操作。代碼:多setOnClickListener()調用導致意外的行爲
TextView wake = (TextView) findViewById(R.id.wake);
TextView ringer = (TextView) findViewById(R.id.ringer);
TextView nap = (TextView) findViewById(R.id.nap);
TextView camera = (TextView) findViewById(R.id.camera);
TextView volumes = (TextView) findViewById(R.id.volumes);
TextView gallery = (TextView) findViewById(R.id.gallery);
wake.setOnClickListener(this);
ringer.setOnClickListener(this);
nap.setOnClickListener(this);
camera.setOnClickListener(this);
volumes.setOnClickListener(this);
gallery.setOnClickListener(this);
到目前爲止,我在我的onClick方法如下Switch - Case
聲明:
@Override
public void onClick(View v) {
Intent intent;
switch (v.getId()) {
case R.id.wake:
case R.id.ringer:
setRingerState(true);
case R.id.nap:
case R.id.camera:
intent = new Intent("android.media.action.IMAGE_CAPTURE");
startActivity(intent);
this.finish();
case R.id.volumes:
case R.id.gallery:
intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivity(intent);
this.finish();
注意,我只有當前實現他們三個。如果我爲gallery
選擇TextView
,它會觸發其相關操作。但是,如果我選擇camera
,它會同時啓動本身和圖庫的操作。如果我選擇ringer
,它會改變鈴聲狀態,啓動相機和圖庫。
我猜這事做的事實,我設置了相同的OnClickListener到所有這些對象,但我真的需要做的是這樣的:
ringer.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
setRingerState(true);
}
});
對於每一個?這看起來很難看。我有其他選擇嗎?或者我錯過了什麼?
感謝您的任何幫助。
是的,在你回答之前,我已經得出了這個結論。謝謝,這樣一個愚蠢的錯誤。 – unaligned