Saya memiliki ListView
dengan adaptor khusus dan itu menunjukkan daftar wifi di sekitar saya. Ketika satu item diklik, saya menampilkan dialog dengan detail. Dialognya adalah kelas khusus yang diturunkan dari DialogFragment
dan ditampilkan menggunakan kode ini setelah pemindaian Wifi selesai:
private class WifiScanReceiver extends BroadcastReceiver {
public void onReceive(Context c, Intent intent) {
List<ScanResult> wifiScanList = wifi.getScanResults();
Log.i("WifiAnal", "rec");
lv.setAdapter(new WifiListAdapter(getApplicationContext(), R.layout.itemlistrow, wifiScanList));
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
ScanResult listItem = (ScanResult)lv.getItemAtPosition(position);
WifiDetailsDialogFragment d = new WifiDetailsDialogFragment();
// Supply num input as an argument.
Bundle args = new Bundle();
args.putString("ssid", listItem.SSID);
d.setArguments(args);
d.show(getSupportFragmentManager(), "fir");
// TODO: PUT ASYNC CALL HERE AND PROCESS FETCHED DATA.
// TODO: SHOW ASYNC RESULT ON OPEN DIALOG
}
});
mSwipeRefreshLayout.setRefreshing(false);
}
}
Kelas WifiDetailsDialogFragment
saya menangani pengembangan tata letak xmlnya dan menampilkannya dengan benar di atas aplikasi dengan tombol Ok.
Sekarang bayangkan saya menampilkan dialog dan sekarang saya ingin menjalankan tugas latar belakang (misalnya mengambil beberapa detail lebih lanjut dari DB di server eksternal) dan setelah saya selesai, jika dialog masih terbuka, masukkan hasilnya ke dalam tata letaknya (kemungkinan memanipulasi nilai beberapa TextViews yang sudah ada dan di-inflate). Jika sudah ditutup pada saat itu, jangan lakukan apa pun.
Bagaimana cara mengakses widget tata letak saya dari proses yang berjalan di latar belakang yang diprakarsai oleh onItemClick? Saya mencoba d.getView()
tetapi ini mengembalikan null
. Apakah cara yang benar melalui FragmentManager
? Saya tidak ingin membuat dialog baru, melainkan mengedit anggota yang sudah ada.
Terima kasih!