2010-05-18 3 views
0

저는 ListView가 각 행에 대해 사용자 정의 된 선형 레이아웃 요소를 보유하는 활동이 있습니다. 이벤트가 시작되지 않습니다이 설정에서내 버튼 OnClick 이벤트가 실행되지 않는 이유는 무엇입니까?

((Button) row.findViewById(R.id.btnPickContact)).setOnClickListener(new View.OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); 
        intent.putExtra(EXTRA_ONLINE_ID, (String)v.getTag(TAG_ONLINE_ID)); 
        act.startActivityForResult(intent, PICK_CONTACT); 
       } 
      }); 

:

<Button 
      android:text="Pick a contact" 
      android:id="@+id/btnPickContact" 
      android:layout_width="wrap_content" 
      android:gravity="center_vertical" 
      android:layout_height="wrap_content"></Button> 

그런 다음 자바, 나는이 코드를 가지고 : 행 중 하나는 다음과 같이 정의 된 버튼이 있습니다.

또한 나는 인터페이스를 구현하여 시도했다 :

여전히
@Override 
    public void onClick(View v) { 
      Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); 
      intent.putExtra(EXTRA_ONLINE_ID, (String)v.getTag(TAG_ONLINE_ID)); 
      startActivityForResult(intent, PICK_CONTACT); 
    } 

행운의 이벤트가 발생하지 않습니다.

어떻게해야합니까?

답변

2

:이 귀하의 질문에 대답 것 같아요. 그리고 귀하의 활동에는

public someHandler(View v) { 
} 

v가 있습니다.

+0

이 방법은 효과가 있지만 왜 이런 식으로해야합니까? – Pentium10

+0

이것은 클릭 할 때의 이벤트 리스너를 코딩하는 다른 방법입니다. 실제로 이것은 문제를 피하면서 원래의 문제를 해결하지 못하게합니다. –

0

이벤트가 시작되지 않고 의도를 시작하는 데 문제가없는 것이 확실합니까?

log.d("Mytest","OnClick Fired!!!");을 onClick의 첫 번째 줄에 추가 한 다음 디버그 로그에 메시지가 있는지 확인하십시오.

+0

예, 시도했습니다. 거기에는 어떤 활동도 없습니다. – Pentium10

-1

대신 여기

(new View.OnClickListener(){.... 

(new OnClickListener(){.... 

이 코드이 사용 ...

((Button) row.findViewById(R.id.btnPickContact)).setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); 
       intent.putExtra(EXTRA_ONLINE_ID, (String)v.getTag(TAG_ONLINE_ID)); 
       act.startActivityForResult(intent, PICK_CONTACT); 
      } 
     }); 
0

당신은에 클릭하고 forcusable 속성을 설정하는 것이 좋습니다 시도 행 레이아웃.

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
     //Inflate view .... 

     button1.setOnClickListener(onclickListener);  
     convertView.setClickable(true); 
     convertView.setFocusable(true); 
     return converView; 
} 
관련 문제