Bisakah seseorang membantu saya membuat antarmuka pendengar yang ditentukan pengguna dengan beberapa cuplikan kode?
134
Buat file baru:
MyListener.java
:
public interface MyListener {
// you can define any parameter as per your requirement
public void callback(View view, String result);
}
Dalam aktivitas Anda, terapkan antarmuka:
MyActivity.java
:
public class MyActivity extends Activity implements MyListener {
@override
public void onCreate(){
MyButton m = new MyButton(this);
}
// method is invoked when MyButton is clicked
@override
public void callback(View view, String result) {
// do your stuff here
}
}
Di kelas khusus Anda, aktifkan antarmuka saat diperlukan:
MyButton.java
:
public class MyButton {
MyListener ml;
// constructor
MyButton(MyListener ml) {
//Setting the listener
this.ml = ml;
}
public void MyLogicToIntimateOthers() {
//Invoke the interface
ml.callback(this, "success");
}
}
WeakReference<>
dalam hal ini, tetapi kemudian Anda tidak dapat membuat pendengar menjadi kelas anonim atau apa pun di mana pendengar tidak memiliki referensi lain ... jadi akan lebih baik jika tidak menggunakannyatolong baca pola pengamat
antarmuka pendengar
maka di kelas Anda katakan
Event
kelasdi kelas pengemudi Anda
MyTestDriver
sumber
Antarmuka
GenericAsyncTask
Lihat ini , pertanyaan ini untuk lebih jelasnya.
sumber
Ada 4 langkah:
1. buat kelas antarmuka (pendengar)
2.menggunakan antarmuka dalam tampilan 1 (define variabel)
3. menambahkan antarmuka untuk melihat 2 (tampilan 1 digunakan dalam tampilan 2)
4. masukkan antarmuka dalam tampilan 1 ke tampilan 2
Contoh:
Langkah 1: Anda perlu membuat antarmuka dan fungsi definde
Langkah 2: gunakan antarmuka ini dalam tampilan
Langkah 3,4: menerapkan aktivitas
sumber
Buat antarmuka pendengar.
Dan buat metode setOnCustomClick di aktivitas lain (atau fragmen), tempat Anda ingin menerapkan pendengar khusus Anda ......
Panggil metode ini dari Aktivitas pertama Anda, dan sampaikan antarmuka pendengar ...
sumber
Pada tahun 2018, tidak perlu antarmuka pendengar. Anda memiliki Android LiveData untuk menjaga agar hasil yang diinginkan dikembalikan ke komponen UI.
Jika saya akan mengambil jawaban Rupesh dan menyesuaikannya untuk menggunakan LiveData, akan seperti ini:
dan sekarang di kelas driver Anda MyTestDriver:
Untuk informasi lebih lanjut bersama dengan contoh kode Anda dapat membaca posting saya tentang hal itu, serta dokumen resmi:
Kapan dan mengapa menggunakan LiveData
Dokumen resmi
sumber
Di Android, Anda dapat membuat antarmuka seperti Listener, dan Aktivitas Anda mengimplementasikannya, tetapi saya rasa itu bukan ide yang baik. jika kita memiliki banyak komponen untuk mendengarkan perubahan statusnya, kita dapat membuat BaseListener mengimplementasikan antarmuka Listener, dan menggunakan kode jenis untuk menanganinya. kita dapat mengikat metode ketika kita membuat file XML, misalnya:
dan kode sumber:
tapi saya rasa itu bukan ide yang bagus ...
sumber
Saya telah melakukan sesuatu seperti di bawah ini untuk mengirim kelas model saya dari Aktivitas Kedua ke Aktivitas Pertama. Saya menggunakan LiveData untuk mencapai ini, dengan bantuan jawaban dari Rupesh dan TheCodeFather.
Aktivitas kedua
"liveSong" adalah AudioListModel yang dideklarasikan secara global
Panggil metode ini di Aktivitas Pertama
Semoga ini membantu penjelajah baru seperti saya.
sumber
Metode sederhana untuk melakukan pendekatan ini. Pertama mengimplementasikan
OnClickListeners
di kelas Activity Anda.Kode:
sumber