Android'de geçebileceğiniz bir dizi iletişim menüsü oluşturarak Android'de bir USSD etkileşimine girmeye çalışıyorum. Şu anda, (on here bana yardımcı olan bir kullanıcı için teşekkürler!) Ben iletişim kutuları arasında, her iletişim arasında 2 saniye boyunca çalışan "USSD kod çalışıyor ..." yazan bir ilerleme iletişim kutusu var. Şimdi, yine de, benim sorunum, ilerledikten sonra ilerlemeyi iptal edemem. Şimdi, iletişim kutularını tamamlamayı bitirdiğimde, hala açık ve çalışır durumda olan ilerleme iletişim kutusunun birkaç örneği vardır. Kodda progress.cancel() komutunu bir yere eklemem gerektiğini biliyorum, ancak bunu denediğim her yer, ilerleme iletişim kutusunun tümünü çalıştırmasını engelliyor gibi görünüyor. İlerlemeyi İptal Et İletişim kutuları arasında çalıştırdıktan sonra
Runnable progressRunnable;
public void FirstScreen() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
// Get the layout inflater
LayoutInflater inflater = this.getLayoutInflater();
// Inflate and set the layout for the dialog; pass null as the parent view because its going in the dialog layout
final View dialogView = inflater.inflate(R.layout.number_response_dialog, null);
builder.setView(dialogView)
.setMessage(R.string.MainMenuText)
// Add action buttons
.setPositiveButton(R.string.send, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
// Send number to next dialog
String choice = getMenuChoice(dialogView);
if (choice.equals("5")) {
//Go to FirstTimeUse menu
progressRunnable = new Runnable() {
@Override
public void run() {
FirstTimeUse();
}
};
USSDprogressDialog(progressRunnable);
} else if (choice.equals("6")) {
//Something else
} else {
//Do nothing
dialog.dismiss();
}
}
})
.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// End session
dialog.dismiss();
}
});
AlertDialog dialog = builder.create();
dialog.show();
}
Ve gerçek ilerleme iletişim yardımcı yöntemi: Ben USSDProgressDialog yönteminin sonunda yanı sıra USSDProgressDialog çalıştırılan tüm diyaloglar içinde dahil çalıştı
public void USSDprogressDialog(Runnable runnable) {
final ProgressDialog progress = new ProgressDialog(this);
progress.setMessage("USSD code running...");
progress.show();
Handler handler = new Handler();
handler.postDelayed(runnable, 2000);
}
. Zamanlayıcı bittikten sonra her seferinde iptal edecek şekilde başka nereye ekleyebilirim? Teşekkür ederim!
Hangi zamanlayıcıyı gösteriyorsunuz? –
USSDProgressDialog yönteminde bulunan, en sonunda 2 saniye boyunca runnable geciktiren işleyicidir. (Gerçek bir "zamanlayıcı" değil ama işe yarıyor) – notchopra