簡體   English   中英

Android 應用程序在使用 setVisibility(View.GONE) 時崩潰;

[英]Android app crashes when using setVisibility(View.GONE);

我有一個運行 5 秒的啟動活動,我想要 2 秒有一個 textview (txtCRF) 和一個 imageview (canuck),另外 3 秒有一個不同的 Z6C666B7F9E6BE3A84FZF2() 每當我在任何元素上使用 setVisibility(View.GONE) 時,應用程序都會崩潰。

這是我的代碼:

package com.example.bounce;

import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;


public class Opening_Activity extends AppCompatActivity {


  private TextView txtCRF;
  private ImageView canuck;
  private ImageView titlescreen;
  public static final int VISIBLE = 0x00000000;
  public static final int INVISIBLE = 0x00000004;
  public static final int GONE = 0x00000008;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_opening_);

    txtCRF = (TextView) findViewById(R.id.txtCRF);
    canuck = (ImageView) findViewById(R.id.canuck);
    titlescreen = (ImageView) findViewById(R.id.titlescreen);

    txtCRF.setVisibility(View.VISIBLE);
    canuck.setVisibility(View.VISIBLE);
    titlescreen.setVisibility(View.GONE);

    Thread thread = new Thread() {
        @Override
        public void run() {
            try {
                sleep(5000);
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                Intent mainIntent = new Intent(Opening_Activity.this, com.example.bounce.MainActivity.class);
                startActivity(mainIntent);
            }
        }
    };
    thread.start();

    Thread thread2 = new Thread() {
        @Override
        public void run() {
            try {
                sleep(2000);
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                txtCRF.setVisibility(View.GONE);
                canuck.setVisibility(View.GONE);
                titlescreen.setVisibility(View.VISIBLE);
                MediaPlayer opening = MediaPlayer.create(Opening_Activity.this, R.raw.openingsound);
                opening.start();
            }
        }
    };
    thread2.start();

  }

  @Override
  protected void onPause() {
    super.onPause();

    finish();
  }
}

我的 XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:background="@drawable/background3"
   android:animateLayoutChanges="true"
   tools:context=".Opening_Activity">

   <ImageView
    android:id="@+id/canuck"
    android:layout_width="wrap_content"
    android:layout_height="200dp"
    android:src="@drawable/canuckyy"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="200dp"
    />

   <ImageView
    android:id="@+id/titlescreen"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/background1" />

    <TextView
    android:id="@+id/txtCRF"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="400dp"
    android:text="CRF"
    android:textColor="@color/white"
    android:textStyle="italic"
    android:textSize="27dp"/>

</RelativeLayout>

查看logcat

線程在后台運行並嘗試更改 ui,這會引發異常。

一種可能的解決方法是在活動上下文中使用runOnUithread

} finally {
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            txtCRF.setVisibility(View.GONE);
            canuck.setVisibility(View.GONE);
            titlescreen.setVisibility(View.VISIBLE);
            MediaPlayer opening = MediaPlayer.create(Opening_Activity.this, R.raw.openingsound);
            opening.start();
        }
    });
}

或者您可以使用處理程序

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM