2014-11-16 2 views
3

Я довольно новичок в Java и xml. Я ищу, чтобы заставка запускалась, когда я запускаю свое приложение примерно на 5 секунд. Я взял код для экрана заставки из переполнения стека, чтобы настроить его, но я не могу заставить его работать по какой-то причине, может кто-нибудь помочь мне! ПриветствияПочему не работает мой заставка?

МОЙ класс Всплеск

package com.darraghoflaherty.competer.game; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.os.Handler; 
import android.view.Menu; 

public class Splash extends Activity { 

/** Duration of wait **/ 
private final int SPLASH_DISPLAY_LENGTH = 5000; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 
    setContentView(R.layout.splashscreen); 

    /* New Handler to start the Menu-Activity 
    * and close this Splash-Screen after some seconds.*/ 
    new Handler().postDelayed(new Runnable(){ 
     @Override 
     public void run() { 
      /* Create an Intent that will start the Menu-Activity. */ 
      Intent mainIntent = new Intent(Splash.this,Menu.class); 
      Splash.this.startActivity(mainIntent); 
      Splash.this.finish(); 
     } 
    }, SPLASH_DISPLAY_LENGTH); 
} 

Мой XML-код

<?xml version="1.0" encoding="utf-8"?> 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="#0099FF"> 

<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:text="@string/ss1" 
    android:id="@+id/ss1" 
    android:textColor="#ffffff" 
    android:textSize="260sp"/> 




</RelativeLayout> 
+1

что вы получаете? если вы получите некоторую ошибку ... тогда logcat пожалуйста .. –

+1

Вы объявили Menu.class в манифесте? – Blackbelt

+0

проблема может быть с вашим манифестом ... bcz вы взяли это из http://stackoverflow.com/questions/5486789/how-do-i-make-a-splash-screen-in-android, и вы можете забыть добавить эти действия, чтобы проявить, –

ответ

2

первого изменения этого мир кода:

public void run() { 
    /* Create an Intent that will start the Menu-Activity. */ 
    Intent mainIntent = new Intent(Splash.this,Menu.class); 
    Splash.this.startActivity(mainIntent); 
    Splash.this.finish(); 
} 

Для

public void run() { 
    /* Create an Intent that will start the Menu-Activity. */ 
    Intent mainIntent = new Intent(getApplicationContext(),Menu.class); 
    startActivity(mainIntent); 
    finish(); 
} 

Теперь ваш код понятен, ошибка должна исходить из файла манифеста. Перейдите в файл манифеста и измените положение фильтра намерения с основного действия на активность slashscreen. вот код:

<intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
+0

прекрасно работает благодаря –

1

Я предполагаю, что вы не изменили пусковую деятельность в манифесте. Android ищет в AndroidManifest.xml, чтобы выбрать действие для запуска в первую очередь. Ваш манифест, вероятно, содержит следующие строки:

<activity android:name=".Menu" android:label="@string/app_name"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

Это должно быть изменено на:

<activity android:name=".Splash" android:label="@string/app_name"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 
<activity android:name=".Menu"/> 

Это также хорошая условность назвать деятельности XyzActivity, поэтому в вашем случае MenuActivity и SplashActivity.

0

использовать этот код для заставки ...

public class SPLASH extends Activity { 


protected boolean _active = true; 
protected int _splashTime = 3000; // time to display the splash screen in MICROSECONDS 


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



    Thread splashTread = new Thread() { 
     @Override 
     public void run() { 
      try { 
       int waited = 0; 
       while (_active && (waited < _splashTime)) { 
        sleep(100); 
        if (_active) { 
         waited += 100; 
        } 
       } 
      } catch (Exception e) { 

      } finally { 

       startActivity(new Intent(Splash.this,Menu.class)); 
       finish(); 
      } 
     }; 
      }; 
    splashTread.start(); 

    } 

} 

и сделать Всплеск деятельности большого пусковой деятельность с использованием

<activity 
     android:name=".SPLASH" 
     android:label="@string/app_name" 
     android:theme="@style/NoActionBar" 
     android:screenOrientation="portrait"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

Надеется, что это поможет у

-1

Эй Checkout это у меня есть немного улучшить. благодаря

public class Splash extends Activity { 

private final int SPLASH_DISPLAY_LENGTH = 5000; 

@Override 
public void onCreate(Bundle icicle) { 
super.onCreate(icicle); 
setContentView(R.layout.splashscreen); 

    nav(); 
} 

public void nav() { 
    new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 


     Intent mainIntent = new Intent(Splash.this,Menu.class); 
     startActivity(mainIntent); 
     finish(); 

     } 
    }, SPLASH_DISPLAY_LENGTH); 
    } 

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

}

+2

Хотели бы вы объяснить, что улучшили? – user3141985

+0

Эй, первое, что мы не можем использовать, как название деятельности .startactivity и, во-вторых, вы можете закончить активность в onPause :) – Saveen

+0

что рыба ...- 1 за подлинность, с которой вы сказали, «не может использовать, как activity name.startactivity», , Splash.this.startActivity() будет отлично работать как startActivity() Он может! но не обязательно! – afadfadf

0
/* New Handler to start the Menu-Activity 
* and close this Splash-Screen after some seconds.*/ 

     Thread timer = new Thread(){ 
     public void run(){ 
      try{ 
       Thread.sleep(2000); 
      } 
      catch(InterruptedException e){ 
       e.printStackTrace(); 
      } 
      finally{ 
       Intent mainIntent = new Intent(Splash.this,Menu.class); 

       startActivity(mainIntent); 

       finish(); 
      } 
     } 

    };// end thread 
    timer.start(); 
Смежные вопросы