بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

نمایش ایتمهای ارایه در Toast(حل نشده!)

مدیریت گفتگو
Stark 10 سال پیش
آخرین تغییر: 8 سال پیش

سلام خدمت همه دوستان

لطفا اخرین سوال رو جواب بدین 

ممنون

 

 

نظرات

atf 10 سال پیش
شما در مورد android service broadcastreceiver سرچ کنید جواب تون رو پیدا میکنید

پاسخ‌ها 5

Stark 10 سال پیش

اینم کدهای برنامم

Activity_Main

  start = (Button) findViewById(R.id.start);
        int min = 2;
        int max = 9;
        Random r = new Random();
        final int i1 = r.nextInt(max - min + 1) + min;

        start.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {

                AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);

                Calendar cal = Calendar.getInstance();
                cal.add(Calendar.SECOND, 1);

                long time = cal.getTimeInMillis();

                Intent i = new Intent(Activity_Main.this, MyReceiver.class);

                PendingIntent pi = PendingIntent.getBroadcast(Activity_Main.this, 0, i, 0);


                // am.set(AlarmManager.RTC_WAKEUP,time,pi);                //مدت زمان نمایش توست روی صفحه

                am.setInexactRepeating(AlarmManager.RTC_WAKEUP, time, i1 * 1000, pi);
            }
        });

//MyReceive



@Override public void onReceive(Context con, Intent arg1) { int min = 767; int max = 768; Random r = new Random(); int i1 = r.nextInt(max - min + 1) + min; min = 767; max = 768; r = new Random(); int i2 = r.nextInt(max - min + 1) + min; final Toast t1 = Toast.makeText(con, "TOAST", Toast.LENGTH_SHORT); t1.setGravity(Gravity.CENTER, i1, i2); t1.show();

نظرات

k112 10 سال پیش

از این کد استفاده کن

final Toast t = Toast.makeText(getBaseContext(), "message",Toast.LENGTH_SHORT);
t.show();

new CountDownTimer(3000, 1000) {

public void onTick(long millisUntilFinished) {t.show();}
public void onFinish() {t.show();}

}.start();

این کد باعث میشه 5 ثانیه نشون بده

2 ثانیه به خاطر Toast.LENGTH_SHORT و سه ثانیه هم که در CountDownTimer اعلام شده

نظرات

Stark 10 سال پیش
خیلی ممنون ولی من میخوام کمتر از این نمایش بده ئر حد صدم ثانیه!
alfredo 10 سال پیش
از این کلاسی که برات میذارم استفاده کن، اگه میخوای درحد صدم ثانیه باشه اون عدد آخر کلاس رو مثلا بذار 200
alfredo 10 سال پیش

یک کلاس بساز به اسم Toaster و این کدها رو براش بذار

 
public class Toaster {

    private static final int SHORT_TOAST_DURATION = 500;


    private Toaster() {}


    public static void makeLongToast(String text, long durationInMillis) {
        final Toast t = Toast.makeText(G.context, text, Toast.LENGTH_SHORT);
        t.setGravity(Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0);

        new CountDownTimer(Math.max(durationInMillis - SHORT_TOAST_DURATION, 100), 100) { // <===== این عداد هم کنترل زمان مرکزی هستند

            @Override
            public void onFinish() {
                t.show();
            }


            @Override
            public void onTick(long millisUntilFinished) {
                t.show();
            }
        }.start();

        Handler handler = new Handler();
        handler.postDelayed(new Runnable() {

            public void run() {
                t.cancel();
            }
        }, 500);
    }
}

حالا هرجا خواستی توست بزنی کد زیر رو بنویس 

 Toaster.makeLongToast("  متن مورد نظر" + CounterActivity.CS, 10);

 اون 10 آخر رو میبینی ؟ اون زمانشه ، هرچی بیشترش کنی بیشتر میشه. فکر کنم 1000 میشه یک ثانیه.

اون 500 که آخر کد کلاس نوشته شده یعنی مثلا بعد از 0/5 ثانیه توست رو کنسل کن. یادش باشه اون رو هم یه عدد زیاد بذاری. چون توست زیر یک ثانیه ای نداریم، برای توست های زیر یک ثانیه از اون استفاده می کنند.

 

 

نظرات

Stark 10 سال پیش
قسمت اخر CounterActivity.CS این CS رو چی باید تعریف کنم؟ اون 10 اخر ک نوشتید مدت زمان نمایشه توست هست ؟یا اینکه بعد از این مدت توست بعدی نمایش داده میشه؟
Stark 10 سال پیش
تو متد makeLongToast هم به تعریف توست گیر میده و میگه باید از ()Show. استفاده کن که اونم میذارم بازم مشکل حل نمیشه و کرش میکنه
alfredo 10 سال پیش
ببخشید من اینجاشو هواسم نبود بهتون بگم. counterActivity اسم کلاسی هست که میخواید توست داخلش نمایش داده بشه. اونجا اسم کلاس خودتون رو بنویسید. یا .this استفاده کنید. اون CS هم یک عدد داخلشه. شما لازم ندارید اون رو.
alfredo 10 سال پیش
اصلا اوت CounterActivity.cs رو شما پاک کنید و ننویسید. اون آدرس یک عدد هست فقط.
Stark 10 سال پیش
@alfredo ممنون از راهنماییتون...یه هندلر گذاشتم مشکل حل شد و الان میخوام شکل و نوشته توست رو عوض کنم و از حالت پیشفرض در بیارم--چجوری این کارو انجام بدم؟
alfredo 10 سال پیش
خواهش، والا من فقط از این استفاده میکنم تا توست زیر یک ثانیه انجام بدم، اونقدر ازش سر در نمیارم، ولی اون قسمت random location on screen که کامنت شده مربوط به جای نشون دادن توست هست که استفاده کردم و کار کرد...
Stark 10 سال پیش

دوستان برای اینکه توست رو به ارایه وصل کنم و همه اندیسهای ارایه رو یکی یکی  با توست نشون بدم چکار باید بکنم؟

 //MyReceive
final Handler mHandler = new Handler(); mHandler.postDelayed(new Runnable() { @Override public void run() { Random r = new Random(); int i1 = r.nextInt(Activity_Main.w); r = new Random(); int i2 = r.nextInt(Activity_Main.h); Log.d("tag : ", i1 + " : " + i2); for (String arr : array) { t1 = Toast.makeText(mContext, arr, Toast.LENGTH_SHORT); } //delay in show toast duration 100ms Handler h = new Handler(); h.postDelayed(new Runnable() { @Override public void run() { t1.cancel(); } }, 100); //random location on screen t1.setGravity(Gravity.TOP, i1, i2); t1.show(); //delay in show next toast int min = 3; int max = 8; Random random = new Random(); int d = random.nextInt(max - min + 1) + min; Log.d("random ", String.valueOf(d)); mHandler.postDelayed(this, d * 1000); } }, 100);

یه for گذاشتم که ارایه رو میخونه اما فقط اندیس اخر ارایه رو نشون میده و وقتی که داخل بلاک For از ()t1.show استفاده میکنم درست میشه ولی هندلری ک نوشتم برای تغییر گراویتی و مدت زمان نمایش توست از کار میافته

ممنون میشم راهنمایی کنید

نظرات

k112 10 سال پیش
با for که نمیشه چون تو یه لحظه تا اخر میره .... به نظرم از Iterator استفاده کن ...
Stark 10 سال پیش
k112-میشه بفرمایید چطوری این کارو انجام بدم؟کلی در موردش خوندم ولی جواب نداد تو برنامه
k112 10 سال پیش
والا اول گفتم ولی الان چک کردم بهرحال برای ایترتور هم باید حلقه استفاده کنی که قطعا نتیجه همون خواهد بود ...
k112 10 سال پیش
والا اول گفتم ولی الان چک کردم بهرحال برای ایترتور هم باید حلقه استفاده کنی که قطعا نتیجه همون خواهد بود ...
k112 10 سال پیش
والا اول گفتم ولی الان چک کردم بهرحال برای ایترتور هم باید حلقه استفاده کنی که قطعا نتیجه همون خواهد بود ... شما میتونی در onfinish توست قبلی یک شی توست دیگه بسازی
Stark 10 سال پیش
اقا کسی نیست این مشکلو حل کنه؟
GoldKing 8 سال پیش

دوست عزیز من مشکلت را دقیق نفهمیدم! میخواهی عناصر داخل یک ارایه را یکی یکی و بصورت متوالی هر کدام را داخل یک toast جدا نشون بدی؟؟؟

 

نظرات

hjmcoder 8 سال پیش
سلام دوست عزیز این تاپیک مال یه ساله پیشه !

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .