رفتن به مطلب
  • 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 پاسخ به این سوال تاکنون داده شده است

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

سلام توی ترد مجزا باید از 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);
						});
});

 

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

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

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

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