Белый цвет на заставке

Я создал экран-заставку, и сначала он работает довольно хорошо, но после этого он показывает мне белый пустой экран вместо файла изображения экрана-заставки. Понятия не имею, почему это происходит.

Я попытался изменить свою родительскую тему style.xml, но некоторые темы вызывают сбой моего приложения, и работает только Theme.AppCompat.Light.NoActionBar и дает мне пустой белый экран.

styles.xml

<resources>

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
</style>

Splash.java

public class Splash extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Thread ssThread = new Thread(){
            @Override
            public void run() {
                try {
                    sleep(3000);
                    Intent startMainScreen = new Intent(getApplicationContext(),MainActivity.class);
                    startActivity(startMainScreen);
                        finish();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        };
        ssThread.start();
    }
}

Последовательность экранов, время ожидания потока и все остальное работает нормально, за исключением того, что изображение не отображается.


person E Heng    schedule 21.08.2015    source источник
comment
Итак, где вы показываете свой файл изображения   -  person sai    schedule 21.08.2015
comment
Разместите свой макет, пожалуйста.   -  person Hussein El Feky    schedule 21.08.2015
comment
Вы не настраиваете представление содержимого в onCreate.   -  person Harish_N    schedule 21.08.2015


Ответы (5)


В своем методе onCreate вы забыли добавить setContentView(R.layout.splash);

person Hussein El Feky    schedule 21.08.2015
comment
Большое спасибо !! Я случайно удалил его только сейчас, когда кодировал макет. - person E Heng; 21.08.2015
comment
Если это сработало, не забудьте принять мой ответ. :) - person Hussein El Feky; 21.08.2015

Вам нужно добавить setContentView в свой метод onCreate.

public class Splash extends AppCompatActivity {
@Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  /*
   *add setContentView here after super.onCreate( )
   */
  setContentView( R.layout.splash_layout);
  Thread ssThread = new Thread(){
   @Override
    public void run() {
     try {
      sleep(3000);
      Intent startMainScreen = new Intent(getApplicationContext(),MainActivity.class);
      startActivity(startMainScreen);
      finish();
     } catch (InterruptedException e) {
       e.printStackTrace();
     }
    }
   };
   ssThread.start();
 }
}
person Matthew Carpenter    schedule 21.08.2015

ВЫ ОТСУТСТВУЕТЕ setContentView (R.layout.YOUR_XML_NAME);

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


         /****** Create Thread that will sleep for 3 seconds *************/        
        Thread background = new Thread() {
            public void run() {

                try {
                    // Thread will sleep for 3 seconds
                    sleep(3*1000);

                    // After 5 seconds redirect to another intent
                    Intent startMainScreen = new Intent(getApplicationContext(),MainActivity.class);
                startActivity(startMainScreen);

                    //Remove activity
                    finish();

                } catch (Exception e) {

                }
            }
        };

        // start thread
        background.start();
}

    @Override
    protected void onDestroy() {

        super.onDestroy();

    }
}
person IntelliJ Amiya    schedule 21.08.2015
comment
@EHeng Приятно слышать. Если полезно, примите, пожалуйста - person IntelliJ Amiya; 21.08.2015

вместо использования потока и функции сна используйте Handler и сделайте что-нибудь вроде этого:

setContentView(R.layout.splash_screen);
int interval = 3000; // 3 second
new Handler().postDelayed(new Runnable() {

        @Override
        public void run() {
            Intent intent = new Intent(SplashScreen.this, MainActivity.class);
            startActivity(intent);
            finish();
        }
    }, interval);
person Rasool Ghana    schedule 21.08.2015
comment
Есть ли отличия? - person E Heng; 21.08.2015
comment
проверьте эту ссылку, и вы поймете это stackoverflow.com/questions / 6964011 / - person Rasool Ghana; 21.08.2015

Вы должны установить Layout в onCreate методе активности Splash, например:

setContentView(R.layout.splash);
person Malwinder Singh    schedule 21.08.2015