0

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

Я попытался изменить родительскую тему 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(); 
    } 
} 

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

+1

Итак, где вы показываете свой файл изображения – sai

+2

Отправьте свое расположение пожалуйста. –

+0

Вы не устанавливаете какой-либо контент в onCreate. –

ответ

3

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

+0

Спасибо вам большое! Я случайно удалил его только сейчас при кодировании макета. –

+0

Если это сработало, пожалуйста, не забудьте принять мой ответ. :) –

+0

@EHeng Разве это не работало для вас? Не забудьте пометить ответ как правильный, чтобы не отвечать будущим пользователям, потому что ваш вопрос по-прежнему находится в неотвеченных вопросах. Благодарю. :) –

2

YOU MISSING 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(); 

    } 
} 
+0

@EHeng Замечательно. Если полезно, то примите пожалуйста –

+0

@EHeng Вы можете проверить верхний код. –

0

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

setContentView(R.layout.splash); 
+0

Yeap, исправлено. Спасибо –

0

вместо использования потоков и функции сна использовать Обработчик и выполните следующие действия:

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); 
+0

Есть ли различия? –

+0

проверить эту ссылку, и вы ее поймете http://stackoverflow.com/questions/6964011/handler-vs-asynctask-vs-thread –

2

Вам нужно добавить 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(); 
} 
} 
Смежные вопросы