کلیدستان

نسخه‌ی کامل: مشکل در alertdialog ، در برنامه اندروید
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام
من یک مشکل اساسی با این آلرت دارم ، اینکه من از gps سرعت و گرفتم و می خوام وقتی سرعت صفر شد یک آلرت بده که دو گزینه داشته باشه .
مشکلی تو ساختش نیست ولی اطلاعات gps مدام در حال بروز رسانیه . یعنی مدام وقتی سرعت به صفر میرسه شروع می کنه به آلرت دادن و پنچره روی پنجره باز میشه ! چطور میشه این مشکل و رفع کرد.؟ ممنون میشم اگر جواب بدین اساتید.
در ضمن توی شرط قبل از اجرای این آلرت از دستور if (speed==0) استفاده کردم و می خواستم شرط باز بودن آلرت و بهش اضافه کنم که نمیشه !
 
سلام.
شما باید یک متغیر، مثلا با نام is_alertdialog_shown ، بسازید. که در ابتدا مقدار آن برابر 0 است.
شرط نمایش alertdialog را بر اساس این دو مورد تعیین کنید :

1- سرعت (speed) برابر 0 باشد       
و :
2- مقدار متغیر  is_alertdialog_shown  برابر 0 باشد

سپس وقتی این دو شرط برآورده شد، قبل از اجرای کدهای نمایش  alertdialog ، یک خط کد بنویسید که در آن، مقدار متغیر  is_alertdialog_shown برابر 1 قرار داده شود. بنابراین با یک بار نمایش  alertdialog ، دیگر نمایش داده نمی شود (زیرا دیگر متغیر is_alertdialog_shown  برابر 0 نیست).

در صورت تمایل، می توانید تعیین کنید که اگر کاربر پنجره  alertdialog را بست، دوباره متغیر  is_alertdialog_shown برابر 0 قرار داده شود.

سلام ممنون از جوابتون.
من این کارو انجام دادم و کدهای من بصورت زیر شد ولی دو تا سوال دارم .

کد:
int is_alertdialog_shown=0;
public void onLocationChanged(Location location) {
String msg = "عرض:" + location.getLatitude() + " , طول :" + location.getLongitude();
Toast.makeText(this, msg ,Toast.LENGTH_SHORT).show();
TextView tvSpeed = (TextView) findViewById(R.id.tv_speed);
tvSpeed.setText("سرعت شما : "+ location.getSpeed());
float Speed=location.getSpeed();

if (Speed == 0.0 && is_alertdialog_shown==0) {

Vibrator v = (Vibrator)getSystemService(MainActivity.VIBRATOR_SERVICE);
v.vibrate(300);
long pattern={0,0};
v.vibrate(pattern,-1);
is_alertdialog_shown=1;
new AlertDialog.Builder(this)
.setTitle("پارک حودرو")
.setMessage("آیا می خواهید خودروی خود را پارک کنید؟")

خوب حالا میشه راهنمایی کنید که اگر کنسل زده شد بعد از 30 ثانیه دوباره همین پیغام نشون داده بشه . (این پیغام دارای دو حالت است ، بله و خیر)
و یک سوال اساسی دیگه اینکه چکار کنیم که اگر سرعت صفر شد بعد از مثلا 1 دقیقه این پیغام ظاهر بشه ؟؟؟؟ ممنون میشم اگر جواب بدین
هر دو موردی که گفتید، نیاز به این دارد که بعد از یک مدت مشخص، یک سری کد اجرا شوند. بنابراین با کدهای ارائه شده در کلید زیر، مشکلتون حل میشه :

http://www.kelidestan.com/keys/keys.php?key=242

در اون مبحث، تعیین شده که بعد از چند ثانیه، کاربر وارد یک Activity جدید شود، اما شما می توانید کدهای خود را به جای کدهای ورود به Activity جدید بنویسید. با بررسی ساختار کدهای آن مبحث، متوجه منظورم می شوید.