kt 中的模块打开 java,错误:尝试调用虚拟方法 'java.lang.String[] java.lang.String.split(



我正在尝试运行以下模块: https://github.com/petersamokhin/floating-hearts-view

该模块是用 Kt 编写的,我必须在 java 上运行它。

所以我这样做了:

HeartsView heartView = new HeartsView(this);
heartView.applyConfig(new HeartsRenderer.Config(5f, 0.15f, 2f));
Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(),R.drawable.heart);
//Drawable myDrawable = getResources().getDrawable(R.drawable.heart);
//Bitmap bitmap = ((BitmapDrawable) myDrawable).getBitmap();
heartView.emitHeart(new HeartsView.Model(0, bitmap));

但它给了我以下错误:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.exoplayer/com.exoplayer.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String[] java.lang.String.split(java.lang.String)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2659)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2720)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1466)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6111)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String[] java.lang.String.split(java.lang.String)' on a null object reference
at org.rajawali3d.util.Capabilities.initialize(Capabilities.java:162)
at org.rajawali3d.util.Capabilities.<init>(Capabilities.java:67)
at org.rajawali3d.util.Capabilities.getInstance(Capabilities.java:73)
at org.rajawali3d.materials.Material.<init>(Material.java:287)
at org.rajawali3d.materials.Material.<init>(Material.java:274)
at com.petersamokhin.android.floatinghearts.HeartsRenderer.initMaterial(HeartsRenderer.kt:104)
at com.petersamokhin.android.floatinghearts.HeartsRenderer.emitHeart(HeartsRenderer.kt:37)
at com.petersamokhin.android.floatinghearts.HeartsView.emitHeart(HeartsView.kt:50)
at com.petersamokhin.android.floatinghearts.HeartsView.emitHeart$default(HeartsView.kt:46)
at com.petersamokhin.android.floatinghearts.HeartsView.emitHeart(HeartsView.kt)
at com.exoplayer.MainActivity.onCreate(MainActivity.java:44)
at android.app.Activity.performCreate(Activity.java:6734)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2612)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2720) 
at android.app.ActivityThread.-wrap12(ActivityThread.java) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1466) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:154) 
at android.app.ActivityThread.main(ActivityThread.java:6111) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 

尝试等待(仅限第一次!(~300-500 毫秒后(即在第一次调用之前(,然后调用emitHeart

我认为您可以在异常堆栈跟踪上方/下方的logcat中看到类似E/libEGL(8930): call to OpenGL ES API with no current context (logged once per thread)的内容。

我不知道真正的原因,可能是设备或Android版本特定的问题。


工作代码:

public class IssueTestActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_issue_test);
LinearLayout rootView = findViewById(R.id.rootView);
final HeartsView heartView = new HeartsView(this);
heartView.applyConfig(new HeartsRenderer.Config(5f, 2f, 2f));
rootView.addView(heartView, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
final Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_heart_white);
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
runOnUiThread(new Runnable() {
@Override
public void run() {
heartView.emitHeart(new HeartsView.Model(0, bitmap), HeartsView.MAX_Y_FULL);
}
});
}
}).start();
}
}

res/layout/activity_issue_test.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/rootView"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#333333"
tools:context=".fh.IssueTestActivity" />

ic_heart_white.png是目录中res/drawable图像。

在Google Nexus 5X模拟器API 28上测试。

相关内容

最新更新