Obsługa klawiszy

W niniejszym temacie w proponowanych kodach pojawi się słowo kluczowe val. Kotlin używa dwóch różnych słów kluczowych do deklaracji zmiennych

val dla zmiennej, której wartość nigdy się nie zmienia

var dla zmiennej, której wartość może się zmienić

Układ komponentów

W tworzonym widoku aktywności umieść jedna kontrolkę typu TextView i trzy kontrolki Button. Poniżej proponowany układ.

obsługa klawiszy Kotlin Android Studio

Deklaracja funkcji

Kod funkcji zamykającej aplikację w systemie android napisanej w języku Kotlin

Wskazówka:


fun Zamknij(){
     finish();
     System.exit(0);
}

W oknie edycji układu aktywności zaznaczamy komponent klawisza (krok 1). Przechodzimy do zakładki Attributes (krok 2). Rozwijamy listę Common Attributes (krok 3). Szukamy pola metody onClick i wpisujemy nazwę naszej funkcji (krok 4). Patrz poniższa ilustracja.

klawisz zamknij Kotlin Android Studio

Metoda druga: Wykorzystanie setOnClickListener

Funkcja setOnClickListener jest popularnie zwana słuchaczem przycisków. Kod słuchacza deklaruje się w metodzie onCreate() tworzonego widoku aktywności.

Wywołanie jednej lub zestawu instrukcji po kliknięciu w przycisk wymaga wykonania następujących kroków:

Tak utworzony blok kodu w funkcji setClickListener jest wykonywany po dotknięciu przycisku.

Typowa składnia wywołania metody setOnClickListener() na przycisku to:

Wskazówka:


val button = findViewById<Button>(R.id.button_id)
button.setOnClickListener {
    //zbiór instrukcji do wykonania
}

Kod naszego rozwiązania

Wskazówka:


package pl.epomoce.klawiszzamknij

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button

class OknoGlowne : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_okno_glowne)

        val button2 = findViewById<Button>(R.id.button2)
        button2.setOnClickListener {
            Zamknij();
        }
    }

    fun Zamknij(){
         finish();
         System.exit(0);
    }
}

Skompiluj program i sprawdź jego działanie.

Metoda trzecia: Wykorzystanie biblioteki funkcji z zewnętrznej klasy

Dbając o porządek (ład) w plikach projektu zbiory funkcji, które mogą być wywoływane w różnych aktywnościach (oknach) tego samego projektu, można przechowywać w jednej osobnej klasie. Odwołanie do tak przechowywanych funkcji, będzie wymagać deklaracji zmiennej do klasy w bieżącej aktywności. Następnie wykorzystując zmienną do klasy funkcji, uzyskamy dostęp do jej metod.

Tworzymy klasę do definiowania naszych funkcji. Kliknij prawym przyciskiem myszki w drzewie projektu, wybierz New/ Kotlin Class

New/ Kotlin Class Kotlin Android Studio

Nadajemy nazwę naszej klasie. Ja nadałem: MojeFunkcje.

New Kotlin Class Kotlin Android Studio

W pliku utworzonej klasy zadeklaruj funkcje zamykającą okno aktywności. Funkcję utwórz z argumentem do aktywności aplikacji. Pozwoli to zamykać aplikację z dowolnej aktywności tworzonego projektu.

Wskazówka:


package pl.epomoce.klawiszzamknij

import androidx.appcompat.app.AppCompatActivity

class MojeFunkcje {

    public fun Zamknij(aktywnosc:AppCompatActivity){
        aktywnosc.finish();
        System.exit(0);
    }

}

Przechodzimy do pliku klasy aktywności i deklarujemy zmienną do utworzonej klasy z funkcjami

Wskazówka:


class OknoGlowne : AppCompatActivity() {

    val mojeFunkcje=MojeFunkcje()

    override fun onCreate(savedInstanceState: Bundle?) {

W metodzie onCreate() piszemy kod słuchacza dla trzeciego przycisku. Zauważ, jak podano argument do aktywności aplikacji (słowo kluczowe this)

Wskazówka:


//kod słuchacza dla przycisku Button3
val button3 = findViewById<Button>(R.id.button3)
button3.setOnClickListener {
    mojeFunkcje.Zamknij(this);
}

Skompiluj program i sprawdź jego działanie.

Kliknięcia w obiekty inne niż Button

Kliknięcia mogą być rejestrowane nie tylko na komponencie przycisku (Button). Do każdego obiektu występującego w widoku aktywności można rejestrator kliknięć. W poniższym przykładzie utworzymy licznik kliknięć w komponent typu TextView.

W utworzonej klasie zbioru funkcji dopiszemy funkcję zliczającą kliknięcia.

Wskazówka:


package pl.epomoce.klawiszzamknij

import androidx.appcompat.app.AppCompatActivity

class MojeFunkcje {

    public fun Licznik(i:Int):Int{
         return i+1
    }

    public fun Zamknij(aktywnosc:AppCompatActivity){
        aktywnosc.finish();
        System.exit(0);
    }

}

W pliku klasy aktywności okna głównego deklarujemy zmienną do przechowywania ilości kliknięć. Przy deklaracji używamy słowa kluczowego var (bo wartość zmiennej może się zmieniać)

Wskazówka:


class OknoGlowne : AppCompatActivity() {
    
    val mojeFunkcje=MojeFunkcje()
    var i=0;
    
    override fun onCreate(savedInstanceState: Bundle?) {

Dopisujemy słuchacza do zliczeń klikania.

Wskazówka:


override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_okno_glowne)
    //kod słuchacza dla przycisku Button2
    val button2 = findViewById<Button>(R.id.button2)
    button2.setOnClickListener {
        Zamknij()
    }
    //kod słuchacza dla przycisku Button3
    val button3 = findViewById<Button>(R.id.button3)
    button3.setOnClickListener {
        mojeFunkcje.Zamknij(this)
    }
    //kod słuchacza dla TextView
    val textView=findViewById<TextView>(R.id.textView)
    textView.setOnClickListener {
        i=mojeFunkcje.Licznik(i)
        textView.setText("Licznik kliknięć: " + i)
    }
}

Skompiluj program i sprawdź jego działanie.

textView.setOnClickListener Kotlin Android Studio

Kolejne kliknięcia w kontrolkę TextView są rejestrowane i wysyłane do jej zawartości przy uzyciu metody setText().

Pełny kod pliku głównej aktywności

Wskazówka:


package pl.epomoce.klawiszzamknij

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.TextView

class OknoGlowne : AppCompatActivity() {

    val mojeFunkcje=MojeFunkcje()
    var i=0;

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_okno_glowne)
        //kod słuchacza dla przycisku Button2
        val button2 = findViewById<Button>(R.id.button2)
        button2.setOnClickListener {
            Zamknij()
        }
        //kod słuchacza dla przycisku Button3
        val button3 = findViewById<Button>(R.id.button3)
        button3.setOnClickListener {
            mojeFunkcje.Zamknij(this)
        }
        //kod słuchacza dla TextView
        val textView=findViewById<TextView>(R.id.textView)
        textView.setOnClickListener {
            i=mojeFunkcje.Licznik(i)
            textView.setText("Licznik kliknięć: " + i)
        }
    }

    fun Zamknij(){
         finish();
         System.exit(0);
    }
}

Pełny kod pliku klasy zbioru funkcji

Wskazówka:


package pl.epomoce.klawiszzamknij

import androidx.appcompat.app.AppCompatActivity

class MojeFunkcje {

    public fun Licznik(i:Int):Int{
         return i+1
    }

    public fun Zamknij(aktywnosc:AppCompatActivity){
        aktywnosc.finish();
        System.exit(0);
    }

}
Alkomat- wirtualny test

Alkomat- darmowa aplikacja na Androida

Pobierz ze sklepu Google Play
Olinowanie stałe- kalkulator średnic

Olinowanie stałe- darmowa aplikacja na Androida

Pobierz ze sklepu Google Play
przepis na gogfry

Przepis na gofry

zobacz
przepis na bitą śmietanę

Przepis na bitą śmietanę

zobacz