رفتن به مطلب
  • 0

اجرای visible بعد از sleep در اندروید استودیو (جاوا)


ben

سوال

سلام من یک کد ساده نوشتم تو اندروید استودیو با زبان جاوا و متوجه شدم که اگه یک ویو invisible باشه و در یک Thread دستور sleep رو اجرا کنم، از بعدِ sleep تا آخرِ Thread نمیشه اون شی رو visible کرد، و نمیدونم چرا و چه ربطی داره ولی بعد کلی آزمون و خطا فهمیدم که اصلا نمیشه، شما پیشنهادی دارین ؟ قطعه کدم :

package com.example.testtry;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

import android.util.Log;

import android.view.View;

import android.widget.Button;

public class MainActivity extends AppCompatActivity {

    Button button;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        button=findViewById(R.id.button);

        button.setVisibility(View.INVISIBLE);

        function();

    }

    void function(){

        new Thread(new Runnable() {

            @Override

            public void run() {

                try {

                    Thread.sleep(1000);

                } catch (Exception e) {

                    e.printStackTrace();

                }

                button.setVisibility(View.VISIBLE);

            }

        }).start();

    }

}

و بعد یک ثانیه میپره بیرون

کد xml ام هم درسته چون خط sleep یا خط set visibility رو پاک میکنم جواب میده بیرون نمیپره

 

 

 

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

1 پاسخ به این سوال تاکنون داده شده است

ارسال‌های توصیه شده

  • 0

سلام توی ترد مجزا باید از Uithread استفادهکنین تا بتونین UI رو تغییر بدین

new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    Thread.sleep(1000);
                } catch (Exception e) {
                    e.printStackTrace();
                }
                  runOnUiThread(new Runnable(){
                      @Override
                      public void run(){
                          button.setVisibility(View.VISIBLE);
                      }
                  });
            }
        }).start();

    

هم runOnUiThread و هم از کد زیر میتونین استفاده کنین، فرقی ندارن

new Handler(Looper.getMainLooper()).post(new Runnable(){
                      @Override
                      public void run(){
                          button.setVisibility(View.VISIBLE);
						});
});

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .
توجه: مطلب ارسالی شما پس از تایید مدیریت برای همه قابل رویت خواهد بود.

مهمان
پاسخ به این سوال ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
  • اضافه کردن...