2016-02-11 21 views
5

Ich versuche, einen Begrüßungsbildschirm für eine Android RN App zu erstellen. Ich habe die hier beschriebenen Schritte befolgt: https://www.bignerdranch.com/blog/splash-screens-the-right-way/Native Android Splash Screen reagieren

Leider, wenn ich meine App zu starten, ist der Build erfolgreich, aber die App abstürzt sagen:

Error type 3 
Error: Activity class {com.needlios/com.needlios.MainActivity} does not exist. 

Hat jemand wissen, wo diese herkommen könnte ?

Ich habe den folgenden Code:

SplashScreen.java

package com.needlios; 

import android.content.Intent; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 

public class SplashActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     Intent intent = new Intent(this, MainActivity.class); 
     startActivity(intent); 
     finish(); 
    } 
} 

MainActivity.java

package com.needlios; 

import com.facebook.react.ReactActivity; 
import com.facebook.react.ReactPackage; 
import com.facebook.react.shell.MainReactPackage; 

import java.util.Arrays; 
import java.util.List; 

public class MainActivity extends ReactActivity { 

    /** 
    * Returns the name of the main component registered from JavaScript. 
    * This is used to schedule rendering of the component. 
    */ 
    @Override 
    protected String getMainComponentName() { 
     return "NeedlIOS"; 
    } 

    /** 
    * Returns whether dev mode should be enabled. 
    * This enables e.g. the dev menu. 
    */ 
    @Override 
    protected boolean getUseDeveloperSupport() { 
     return BuildConfig.DEBUG; 
    } 

    /** 
    * A list of packages used by the app. If the app uses additional views 
    * or modules besides the default ones, add more packages here. 
    */ 
    @Override 
    protected List<ReactPackage> getPackages() { 
     return Arrays.<ReactPackage>asList(
      new MainReactPackage(), 
     ); 
    } 
} 

AndroidManifest.xml

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

Antwort

3

OK, nun funktioniert es jetzt. Ich habe gerade die android:name-android:name=".MainActivity" in AndroidManifest.xml

Es funktioniert, aber ich verstehe nicht, warum es den Splash-Screen obwohl zeigt ...

+1

Sie ein Repo teilen könnten? – Tiagojdferreira

+1

I Ich habe versucht, dein Beispiel zu verwenden und ich konnte es nicht funktionieren, kannst du den vollständigen Code posten, wie du es gemacht hast? – NinetyHH

-3

Sie kann Splash-Screen innerhalb ract-native Skript erstellen, Sie müssen zur nativen Implementierung wechseln. Um einen einfachen Begrüßungsbildschirm zu erstellen, müssen Sie "android: windowBackground" auf ein Thema setzen, das von Ihrer Hauptaktivität verwendet wird. Auf diese Weise werden sie dem Benutzer gezeigt, bis Ihre reaktionsnative Ansicht vollständig geladen ist. Hier ist die article, wie es geht.

0

Nur um zu teilen, wie ich das auch funktionierte.

Die Änderung des Androiden

:

zu

android Name: Name = in AndroidManifest.xml

"MainActivity."

funktioniert, weil der gesamte Hintergrund zum Splashscreen-Thema geändert wurde. Es ist möglicherweise keine gute Lösung, als ob die backgroundColor von jedem Bildschirm entfernt wird; Dieser Begrüßungsbildschirmhintergrund wird angezeigt. Schließlich wird es zu einigen unerwünschten Anzeigen führen, wenn Sie mit einigen Kamerafunktionen integrieren müssen. :(

Die meisten der Codes werden auf dieser Basis link mit nur splash Aktivität entfernt. Wenn jemand sucht Werte addieren/Colors.xml und ziehbar/backgroundsplash.xml.

+0

Seufzer, sollte als Kommentar hinzugefügt werden, endete als Post. – Han