Skocz do zawartości
ihomen

Obsługa przycisku w oknie dialog

Rekomendowane odpowiedzi

ihomen

Cześć,

po utworzeniu aplikacji mam plansze i gdy klika się któryś z jej elementów to uruchamia okno dialogowe z przyciskami (przyciski zdefiniowane w osobnym pliku xml) i o ile 9 przyciskow to cyfry to moge uzywac takiej konstrukcji:

@Override

public boolean onKeyDown(int keyCode, KeyEvent event)

{

Log.d(TAG, "onKeyDown: keycode=" + keyCode + ", event="+ event);

switch(keyCode)

{

case KeyEvent.KEYCODE_0:

case KeyEvent.KEYCODE_SPACE: setSelectedTile(0); break;

case KeyEvent.KEYCODE_1: setSelectedTile(1); break;

[.........]

i to działa. Ale w tym dialogu mam dodatkowy przycisk delete.

dodanie do powyzszej metody :

(globalna zmienna private View keypad;)

switch(keypad.getId())

{

case R.id.keypad_del : wywolanie_metody; break;

}

to roziazanie,moze ktos mnie naprowadzic gdzie jest blad w moim mysleniu?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

wszędzie, tak się nie używa guzików zdefiniowanych Layout

jeżeli guziki zostały zdefiniowane przez deklaracje:

<Button android:id="@+id/cancel"

android:layout_height="wrap_content"

android:layout_width="wrap_content"

android:text="@string/cancel"/>

to należy się do nich odwołać przez:

findViewById();

oraz zdefiniować Listener

następnie w nim zastosować przełącznik switch korzystając z View.getId()

Button button = (Button) findViewById(R.id.cancel);
button.setOnClickListener(action);
View.OnClickListener action = new View.OnClickListener() {
public void onClick(View viev) {
	switch (viev.getId()) {

	}
}
}

Edytowane przez zawadaki

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
ihomen

[...]

Button button = (Button) findViewById(R.id.cancel);
button.setOnClickListener(action);
View.OnClickListener action = new View.OnClickListener() {
public void onClick(View viev) {
	switch (viev.getId()) {

	}
}
}

mam problem ze zmienną "action" coś nie chcę banglać.

setOnClickListener przyjmuje jako argument zmienna typu OnClickListener

zas action jest typu View.OnClickListener i cos sie gryzie...

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
mam problem ze zmienną "action" coś nie chcę banglać.

setOnClickListener przyjmuje jako argument zmienna typu OnClickListener

zas action jest typu View.OnClickListener i cos sie gryzie...

na pewno działa z i baz Viev ale musisz zrobić zmienną globalną klasy

private final View.OnClickListener action = new View.OnClickListener() {
public void onClick(View viev) {
	switch (viev.getId()) {

	}
}
};

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
ihomen

miałeś rację z tym action. Jak teraz patrzę to aż wstyd że nie zauważyłem.

Mam zm. action, button'a jednak kiedy w metodzie onKeyDown (w ktorej obsluguje wszystkie przyciski) dodam button.setOnClickListener(action) to dalej przycisk nie reaguje w aplikacji.

w onClick w switch'u najpierw zrobilem

case R.id.button

ale tez nie dziala to probowalem z:

			if(view.getId() == R.id.keypad_del)
		{
			setSelectedTile(0);
		}

dalej nic wiec pewnie cos zle robie z setOnClickListener...

//EDIT: chyba wiem co zle robie, pod wieczor bede mogl znowu przysiasc to mze zacznie dzialac...

Edytowane przez ihomen

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
miałeś rację z tym action. Jak teraz patrzę to aż wstyd że nie zauważyłem.

Mam zm. action, button'a jednak kiedy w metodzie onKeyDown (w ktorej obsluguje wszystkie przyciski) dodam button.setOnClickListener(action) to dalej przycisk nie reaguje w aplikacji.

w onClick w switch'u najpierw zrobilem

case R.id.button

ale tez nie dziala to probowalem z:

			if(view.getId() == R.id.keypad_del)
		{
			setSelectedTile(0);
		}

dalej nic wiec pewnie cos zle robie z setOnClickListener...

//EDIT: chyba wiem co zle robie, pod wieczor bede mogl znowu przysiasc to mze zacznie dzialac...

to nie możne działać zdarzenia setOnClickListener umieść w onCreate tuz po definicji uchwytu do guzika każdy guzik musi się odwoływać do tego samego Listenera

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
ihomen

działa tak jak powinno, wielkie dzięki za pomoc. Ide dalej do książek i kodu rzeźbić żeby już więcej nie zadawać takich lamerskich pytań.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.


  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.