在android上的react本机应用程序中启动屏幕不起作用
我有react原生应用程序,我需要在android上实现一个启动屏幕。我的步骤是:将png图像放到app/src/main/res/mibmap,在app/src/main/res/drawable/中创建background_splash.xml,在app/src/main/res/values/styles.xml中添加SplashTheme,更改AndroidManifest.xml,更改MainActivity.java,在src/main/java/中创建SplashActivity.java类。但是我的启动屏幕没有出现在应用程序中。你能解释一下我做错了什么吗 background_splash.xml在android上的react本机应用程序中启动屏幕不起作用,android,react-native-android,splash-screen,Android,React Native Android,Splash Screen,我有react原生应用程序,我需要在android上实现一个启动屏幕。我的步骤是:将png图像放到app/src/main/res/mibmap,在app/src/main/res/drawable/中创建background_splash.xml,在app/src/main/res/values/styles.xml中添加SplashTheme,更改AndroidManifest.xml,更改MainActivity.java,在src/main/java/中创建SplashActivity.
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/black" />
<item>
<bitmap
android:src="mipmap/splash_screen"
android:gravity="center" />
</item>
</layer-list>
SplashActivity.java
package broker.mapp;
import android.os.Bundle;
import com.facebook.react.ReactActivity;
import io.fabric.sdk.android.Fabric;
import com.crashlytics.android.core.CrashlyticsCore;
import com.crashlytics.android.Crashlytics;
import android.content.Intent;
import android.content.res.Configuration;
import org.devio.rn.splashscreen.SplashScreen;
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 "BrokerMapp";
}
@Override
protected void onCreate(Bundle savedInstanceState) {
SplashScreen.show(this, true);
super.onCreate(savedInstanceState);
CrashlyticsCore core = new
CrashlyticsCore.Builder().disabled(BuildConfig.USE_FABRIC !=
"TRUE").build();
Fabric.with(this, new
Crashlytics.Builder().core(core).build());
}
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
Intent intent = new Intent("onConfigurationChanged");
intent.putExtra("newConfig", newConfig);
this.sendBroadcast(intent);
}
}
package com.app;
import android.content.Intent;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
public class SplashActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = new Intent(this, rshb.broker.mapp.MainActivity.class);
startActivity(intent);
finish();
}
}
在onCreate方法中尝试下面的代码
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent intent = new Intent(SplashActivity.this,MainActivity.class);
startActivity(intent);
finish();
}
}, 3000);
我在javaI上使用react native,android版本我在答案中做了更改,请在android Studio的onCreate方法中调用它,我得到以下错误:执行时出错:am start-n“APPLICATION\u ID\u NOT\u SET/broker.mapp.SplashActivity”-a android.intent.action.MAIN-c android.intent.category.LAUNCHER开始:intent{act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER]cmp=APPLICATION\u ID\u NOT\u SET/rshb.broker.mapp.SplashActivity}错误类型3错误:活动类{APPLICATION\u ID\u NOT\u SET/rshb.broker.mapp.SplashActivity}不存在。启动活动时出错
package broker.mapp;
import android.os.Bundle;
import com.facebook.react.ReactActivity;
import io.fabric.sdk.android.Fabric;
import com.crashlytics.android.core.CrashlyticsCore;
import com.crashlytics.android.Crashlytics;
import android.content.Intent;
import android.content.res.Configuration;
import org.devio.rn.splashscreen.SplashScreen;
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 "BrokerMapp";
}
@Override
protected void onCreate(Bundle savedInstanceState) {
SplashScreen.show(this, true);
super.onCreate(savedInstanceState);
CrashlyticsCore core = new
CrashlyticsCore.Builder().disabled(BuildConfig.USE_FABRIC !=
"TRUE").build();
Fabric.with(this, new
Crashlytics.Builder().core(core).build());
}
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
Intent intent = new Intent("onConfigurationChanged");
intent.putExtra("newConfig", newConfig);
this.sendBroadcast(intent);
}
}
package com.app;
import android.content.Intent;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
public class SplashActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = new Intent(this, rshb.broker.mapp.MainActivity.class);
startActivity(intent);
finish();
}
}
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent intent = new Intent(SplashActivity.this,MainActivity.class);
startActivity(intent);
finish();
}
}, 3000);