2012-11-14 27 views
5

Widziałem kilka artykułów, takich jak ten one opisujących, jak obsługiwać długie wydarzenie prasowe za pomocą przycisku. Mogę postępować zgodnie z tymi wskazówkami, ale zastanawiam się, czy można to zrobić w ten sam sposób, w jaki potraktowałem kliknięcie. Sposób, w jaki obsługiwane kliknięcie było określenie obsługi w formacie XML jako takie:Długie naciśnięcie przycisku Event Handler

<Button 
    android:id="@+id/btn_NextLift" 
    ... 
    android:onClick="btn_NextLiftClick" /> 

następnie w kodzie jako takie:

public void btn_NextLiftClick(View vw_Current) 
    {...} 

widzę właściwość logiczną longClickable w xml, ale don” t zobaczyć, gdzie zdefiniować obsługę zdarzeń, więc ... ???

TIA JB

Odpowiedz

17

Nie można tego zrobić za pomocą XML. Zamiast tego użyj:

Button button = (Button) findViewById(R.id.btn_NextLift); 

button.setOnLongClickListener(new OnLongClickListener() { 
     @Override 
     public boolean onLongClick(View v) { 
      // TODO Auto-generated method stub 
      return true; 
     } 
    }); 

Upewnij się, że ten kod pochodzi po wywołaniu setContentView().

Upewnij się również, że właściwość longClickable ma wartość true.

+0

To frustrujące. Zdecydowanie ustawiam kod po setContentView, ale mój przycisk wciąż pojawia się null, więc otrzymuję wyjątek NullRef. – GPGVM

+0

Jeśli dodam procedurę obsługi LongClick do obsługi kliknięcia zdefiniowanej przez XML, to działa. To tak, jakby mój przycisk się ukrywał i nie można go znaleźć, dopóki nie podniesie wydarzenia? – GPGVM

+0

Edytuj swoje pytanie, aby dołączyć kod. –

Powiązane problemy