10. Андроид иловасида диалог ойналарини ҳосил қилиш Dialog fragmenti DialogFragment


Download 0.58 Mb.
Pdf ko'rish
bet8/10
Sana24.03.2023
Hajmi0.58 Mb.
#1292848
1   2   3   4   5   6   7   8   9   10
Bog'liq
1-10

setMultiChoiceItems( ) usulidagi birinchi parametr belgilash kataklari boʻlgan roʻyxat uchun 
qiymatlar massivi, ikkinchi parametr dialog oynasi chaqirilganda standart roʻyxat belgilash 
katakchalari holatining mantiqiy massividir. Misol uchun, biz ro'yxatning ikkinchi elementi 
tekshirilishini va qolgan elementlarning belgisiz qoldirishini xohlaymiz. Bunday holda, biz 
mantiqiy qiymatlar qatoridan foydalanamiz:
final boolean[ ] checkedItemsArray = {noto'g'ri, rost, noto'g'ri}; 
Radio tugmalari bilan oldingi holatda bo'lgani kabi, tasdiqlash qutisi dialog oynasi uchun 
oynani yopish uchun tugmalardan foydalanishingiz kerak. 


20 
Oynani avtomatik yopish 
Tost xabaridan 
farqli o'laroq , dialog oynalari o'zlarini yopib qo'ymaydi, lekin 
foydalanuvchining javobini kutadi. Ammo agar biz taymerdan foydalansak, bu cheklovni 
chetlab o'tishimiz mumkin. 
Loyihaga o'z-o'zidan yopiladigan dialog oynasini chaqirish uchun tugma qo'shamiz va tugmani 
bosish ishlov beruvchisi kodini yozamiz (fragmentdan foydalanmasdan eski misol): 
public void onClick(View v) { 
AlertDialog.Builder quruvchisi = yangi AlertDialog.Builder(v.getContext()); 
builder.setTitle ("Avtomatik yopish oynasi"); 
builder.setMessage ("Ushbu oyna besh soniyadan keyin avtomatik ravishda yopiladi!"); 
builder.setCancelable(to'g'ri); 
final AlertDialog dlg = builder.create(); 
dlg.show(); 
yakuniy taymer taymer = yangi taymer(); 
timer.schedule(yangi TimerTask() { 
public void run() { 
dlg.dississ(); // agar vazifa faol bo'lsa, dialog oynasini yoping 
timer.cancel(); // shuningdek, taymer chizig'ini yuqoriga ko'taring, aks holda, 
// siz xato haqida hisobot olishingiz mumkin 

}, 5000); // 5 soniyadan so'ng (5000 millisekund ) vazifa faol bo'ladi. 



21 
Reytingli AlertDialog (muammo misoli) 
Bir marta men tarmoqda RatingBar komponentini dialog oynasiga kiritish misoliga duch 
keldim. Sinov paytida men kod juda to'g'ri ishlamayotganini aniqladim. Sozlamalardan qat'i 
nazar, har doim ekranda oltita yulduz ko'rsatiladi. Va agar siz dasturni landshaft rejimiga 
kengaytirsangiz, ekran o'lchamiga qarab etti yulduz yoki undan ko'p ko'rsatiladi. Men esdalik 
sifatida misol qoldirdim, agar kimdir bu erda muammo nima ekanligini tushunsa, menga xabar 
bering. Bu ham fragmentdan foydalanmasdan eski misol. 
umumiy TextView txtView; 
public void onCreate (to'plam savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 
txtView = findViewById(R.id.textView1); 

public void onClick(View v) { 
showRatingDialog(); 

public void showRatingDialog() { 
final AlertDialog.Builder reyting dialogi = yangi AlertDialog.Builder(bu); 
yakuniy RatingBar reytingi = yangi RatingBar(bu); 
ratingdialog.setIcon(android.R.drawable.btn_star_big_on); 
ratingdialog.setTitle ("Sevimli mushukingiz uchun ovoz bering!"); 
ratingdialog.setView(reyting); 
rating.setMax(5); 
rating.setNumStars(5); 
rating.setStepSize((float) 1.0); 
ratingdialog.setPositiveButton (" Bajarildi ", 
new DialogInterface.OnClickListener() { 
public void onClick(DialogInterface dialog, qaysi) { 
txtView.setText(String.valueOf(rating.getRating())); 
dialog.dississ(); 

}) 
.setNegativeButton (“ Bekor qilish ”, 
new DialogInterface.OnClickListener() { 
public void onClick(DialogInterface dialog, int id) { 
dialog.cancel(); 

}); 


22 
ratingdialog.create(); 
ratingdialog.show(); 

Muammolarni bartaraf etish 
O'quvchilar muammoni hal qilishning bir qancha usullarini taklif qilishdi. Hujjatlar taklif 
qilganidek, RatingBar komponenti wrap_content xususiyatiga ega bo'lgan tartibda 
joylashtirilishi kerak . Keling, quyidagi tarzda davom etaylik. Keling, RatingBar bilan alohida 
belgi yarataylik , biz uni dialog oynasiga biriktiramiz. Shunday qilib , belgilash : 
res/layout/ratingdialog.xml 
 
android: id="@+id/linearlayout" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:orientation="vertikal" 
android:padding="2dip" > 
android: id="@+id/reyting paneli" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_gravity="center" 
android:layout_marginBottom="10dp" 
android:layout_marginTop="10dp" 
android: bosiladigan = "haqiqat" 
android:isIndicator="noto'g'ri" 
android:numStars="3" 
android:reyting="2" 
android: stepSize="1.0" /> 


23 
 
Hozir tahrirlangan kod : 
public void showRatingDialog() { 
final AlertDialog.Builder reyting dialogi = yangi AlertDialog.Builder(bu); 
ratingdialog.setIcon(android.R.drawable.btn_star_big_on); 
ratingdialog.setTitle ("Sevimli mushukingiz uchun ovoz bering!"); 
Linearlayoutni ko'rish = getLayoutInflater().inflate(R.layout.ratingdialog, null); 
ratingdialog.setView (chiziqli tartib); 
yakuniy RatingBar reytingi = (RatingBar)linearlayout.findViewById(R.id.ratingbar); 
ratingdialog.setPositiveButton (" Bajarildi ", 
new DialogInterface.OnClickListener() { 
public void onClick(DialogInterface dialog, qaysi) { 
txtView.setText(String.valueOf(rating.getRating())); 
dialog.dississ(); 

}) 
.setNegativeButton (“ Bekor qilish ”, 
new DialogInterface.OnClickListener() { 
public void onClick(DialogInterface dialog, int id) { 
dialog.cancel(); 

}); 
ratingdialog.create(); 
ratingdialog.show(); 



24 
Esda tutingki, RatingBar xususiyatlariga kirish uchun biz odatda onCreate( ) usulida sinf 
nomini tashlab qo'ysak , Activity.findViewById() emas, balki View.findViewById () usulini 

Download 0.58 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   10




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling