Android studio FATAL EXCEPTION: Thread - PullRequest
       16

Android studio FATAL EXCEPTION: Thread

0 голосов
/ 02 апреля 2020

У меня проблема с FATAL EXCEPTION: Thread

Я создал программу, принцип работы, такую ​​программу в режиме редактирования текста, я пишу любые слова, затем, когда я нажимаю кнопку Glide, gif начинает загрузку с URL, а gif начинает загружать анимацию лотереи после загрузки и начинает играть gif.

проблема заключается в том, что когда я запускаю программу и затем нажимаю на кнопку, программа выдает такой ошибка

2020-04-02 19:47:29.494 24812-25040/com.example.askme E/AndroidRuntime: in writeCrashedAppName, pkgName :com.example.askme
2020-04-02 19:47:29.511 24812-25040/com.example.askme E/AndroidRuntime: FATAL EXCEPTION: Thread-2
    Process: com.example.askme, PID: 24812
    android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
        at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:6899)
        at android.view.ViewRootImpl.requestLayout(ViewRootImpl.java:1055)
        at android.view.View.requestLayout(View.java:19938)
        at android.view.View.requestLayout(View.java:19938)
        at android.view.View.requestLayout(View.java:19938)
        at android.view.View.requestLayout(View.java:19938)
        at android.view.View.requestLayout(View.java:19938)
        at android.view.View.requestLayout(View.java:19938)
        at androidx.constraintlayout.widget.ConstraintLayout.requestLayout(ConstraintLayout.java:3172)
        at android.view.View.requestLayout(View.java:19938)
        at androidx.constraintlayout.widget.ConstraintLayout.requestLayout(ConstraintLayout.java:3172)
        at android.view.View.requestLayout(View.java:19938)
        at android.widget.ImageView.setImageDrawable(ImageView.java:529)
        at androidx.appcompat.widget.AppCompatImageView.setImageDrawable(AppCompatImageView.java:100)
        at com.airbnb.lottie.LottieAnimationView.setImageDrawable(LottieAnimationView.java:231)
        at com.airbnb.lottie.LottieDrawable.setComposition(LottieDrawable.java:239)
        at com.airbnb.lottie.LottieAnimationView.setComposition(LottieAnimationView.java:503)
        at com.airbnb.lottie.LottieAnimationView$2.onResult(LottieAnimationView.java:80)
        at com.airbnb.lottie.LottieAnimationView$2.onResult(LottieAnimationView.java:78)
        at com.airbnb.lottie.LottieTask.addListener(LottieTask.java:80)
        at com.airbnb.lottie.LottieAnimationView.setCompositionTask(LottieAnimationView.java:480)
        at com.airbnb.lottie.LottieAnimationView.setAnimation(LottieAnimationView.java:388)
        at com.example.askme.MainActivity$ThreadForAnim.run(MainActivity.java:250)

когда я нажимаю на кнопку, этот код работает

public void getData(View view) {
    if(!checkConnection()) {
        Toast.makeText(this,"No internet connection",Toast.LENGTH_SHORT).show();
        return;
    }
    getApi();
    text = editText.getText().toString();
    if (!text.equals("")){
        editText.setText("");

        textView.setVisibility(View.INVISIBLE);
        relativeLayout.setVisibility(View.INVISIBLE);
        askme.setVisibility(View.INVISIBLE);
        imageButton.setVisibility(View.INVISIBLE);
        textView3.setVisibility(View.INVISIBLE);

        constraintLayout.setVisibility(View.VISIBLE);
        lottieAnimationView.setVisibility(View.VISIBLE);
        textView2.setVisibility(View.VISIBLE);

        threadForAnim.start();

        Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            public void run() {
                PlayGif();
            }
        }, 2000);
    }
    else Toast.makeText(this, "Please enter your question!", Toast.LENGTH_SHORT).show();
}

public void PlayGif(){
    Glide.with(this)
            .asGif().load(gif)
            .apply(new RequestOptions()
                    .error(R.drawable.ic_action_name))
            .listener(new RequestListener<GifDrawable>() {
                @Override
                public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<GifDrawable> target, boolean isFirstResource) {
                    return false;
                }

                @Override
                public boolean onResourceReady(GifDrawable resource, Object model, Target<GifDrawable> target, DataSource dataSource, boolean isFirstResource) {
                    Log.e("status", "gif loaded");
                    handler.removeCallbacks(threadForAnim);
                    lottieAnimationView.cancelAnimation();
                    lottieAnimationView.setVisibility(View.INVISIBLE);
                    textView2.setVisibility(View.INVISIBLE);

                    constraintLayout.setVisibility(View.VISIBLE);
                    textView3.setText(text);
                    textView3.setVisibility(View.VISIBLE);
                    askme.setVisibility(View.VISIBLE);
                    imageButton.setVisibility(View.VISIBLE);
                    gifView.setVisibility(View.VISIBLE);
                    Log.e("status", "removeCallbacks");
                    return false;
                }
            }).into(gifView);
}

class ThreadForAnim extends Thread{
    @Override
    public void run() {
        super.run();
        Log.e("status", "run");
        lottieAnimationView.setAnimation("data.json");
        lottieAnimationView.loop(true);
        lottieAnimationView.playAnimation();
    }
}

Помогите создать эту программу благодаря большое

...