0
我在應用程序中有3-4個活動,並且它們都有一些很好的事件偵聽器。 但是隻有在一項活動中,我根本無法讓事件處理工作。 我試過這個線程的解決方案:http://www.anddev.org/view-layout-resource-problems-f27/ontouch-not-called-t16578.html 它不適合我。我嘗試從Java代碼手動爲ImageViews設置OnClickListeners,從XML中android:onClick。onClick不會在ImageView上觸發
似乎有些其他組件處理所有事件,或者我的活動沒有處理事件的權限。 我應該爲AndroidMainfest.xml中的某些內容添加用於啓用處理事件的活動嗎?
希望有人有這個想法我應該怎麼嘗試,下面的代碼:
活動:
package com.renegade.begining;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageView;
public class NotesOnStaff extends Activity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.notes_on_staff);
/* NoteView2 note=(NoteView2)findViewById(R.id.note_red);
Bitmap bm=BitmapFactory.decodeResource(getResources(), R.drawable.note_red);
note.setImage(bm);
*/
}
public void onClickEventBtn1(View v) {
// TODO Auto-generated method stub
ImageView keyboard_letter=(ImageView)findViewById(R.id.keyboard_letters);
keyboard_letter.setVisibility(View.INVISIBLE);
}
public void onClickEventBtn2(View v) {
// TODO Auto-generated method stub
ImageView keyboard_letter=(ImageView)findViewById(R.id.keyboard_letters);
keyboard_letter.setVisibility(View.VISIBLE);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
ImageView keyboard_letter=(ImageView)findViewById(R.id.keyboard_letters);
keyboard_letter.setVisibility(View.VISIBLE);
return true;
case MotionEvent.ACTION_UP:
return false; // something else
default:
return false;// all others
}
}
}
佈局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/notes_on_staff_layout"
android:background="@drawable/background_ver"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView
android:id="@+id/notes_keyboard"
android:src="@drawable/keyboard"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="20dip"
android:clickable="true" android:focusable="true"/>
<ImageView
android:id="@+id/btn_hide"
android:src="@drawable/btnhide"
android:layout_alignParentLeft="true"
android:layout_marginTop="40dip"
android:layout_marginLeft="10dip"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:onClick="onClickEventBtn1"
android:clickable="true" android:focusable="true"/>
<ImageView
android:id="@+id/btn_show"
android:layout_alignBottom="@id/btn_hide"
android:layout_toRightOf="@id/btn_hide"
android:src="@drawable/btnshow"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:onClick="onClickEventBtn2"
android:clickable="true" android:focusable="true"/>
<ImageView
android:id="@+id/staff"
android:src="@drawable/staff"
android:layout_below="@id/btn_hide"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="0dip"
android:layout_above="@id/notes_keyboard"
/>
<com.renegade.begining.NoteView2
android:id="@+id/note_red"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<ImageView
android:id="@+id/keyboard_letters"
android:layout_alignLeft="@+id/notes_keyboard"
android:layout_alignBottom="@+id/notes_keyboard"
android:layout_marginBottom="10dip"
android:visibility="invisible"
android:src="@drawable/keyboard_letters"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:clickable="true" android:focusable="true"/>
</RelativeLayout>
Thx for reply。 我明白你的觀點,但問題在於我的活動根本沒有註冊點擊和觸摸事件。它永遠不會進入onTouch()和onClick()函數(我在調試模式下進行檢查)。 我不需要Activity.onTouch(),我只是想檢查事件是否在那裏處理。而事實並非如此。 – 2010-08-06 01:42:19
您的keyboard_letters視圖不可見,但可點擊;它似乎有可能重疊您的按鈕並防止點擊發射。嘗試刪除它和觸摸事件處理程序,看看你的按鈕是否觸發? 我唯一能想到的其他事情是,NoteView2沒有提供源代碼,它可能會不恰當地設置其可觸摸區域並阻止其他視圖獲得焦點。 (更一般地,試着從兩個按鈕和兩個按鈕點擊監聽器的最小布局和活動開始,一次添加一個視圖/方法,直到找到罪魁禍首)。 – 2010-08-06 15:36:31
Thx再一次爲您提供幫助。我將從頭開始構建佈局,並在此處發佈結果。 – 2010-08-07 11:02:24