React Native Android启动屏幕

6
我正尝试为 Android RN 应用程序构建启动屏幕。我已经按照这里描述的步骤进行了操作:https://www.bignerdranch.com/blog/splash-screens-the-right-way/ 不幸的是,当我尝试启动应用程序时,构建顺利完成,但应用程序崩溃并显示以下错误信息:
Error type 3
Error: Activity class {com.needlios/com.needlios.MainActivity} does not exist.

有人知道这可能来自哪里吗?

我有以下代码:

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>
3个回答

4

好的,现在它可以正常工作了。我只是在AndroidManifest.xml中将android:name更改为android:name=".MainActivity"

它能够正常工作,但我不明白为什么它会显示启动画面...


1
你能分享一个代码仓库吗? - Tiagojdferreira
1
我试图使用你的示例,但我无法让它工作,你能否发布完整的代码以展示你是如何做到的? - NinetyHH

1

我也想分享一下我的经验,让大家知道这个方法是可行的。

在AndroidManifest.xml文件中将

android:name

改为

android:name=".MainActivity"

这样做是因为整个背景已经被修改为启动屏幕主题。但这可能不是一个好的解决方案,因为如果从任何屏幕中删除了backgroundColor,这个启动屏幕背景就会出现。最终,当你需要与某些相机功能集成时,它会导致一些不必要的显示问题。 :(

大部分代码都基于link,只是去掉了启动屏幕活动。如果有人正在寻找添加values/colors.xml和drawable/backgroundsplash.xml的方法,请参考该链接。


叹息,本来想添加为注释,结果变成了发布的帖子。 - Han

-3

你不能在React Native脚本中创建启动画面,你需要转向原生实现。 要创建简单的启动画面,你需要在主活动所使用的主题上设置“android:windowBackground”。这样,它们将显示给用户,直到你的React Native视图完全加载。 这里是关于如何做到这一点的文章


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接