Модуль в kt включает Java, ошибка: попытка вызвать виртуальный метод 'java.lang.String [] java.lang.String.split ( - PullRequest
0 голосов
/ 30 сентября 2018

Я пытаюсь запустить следующий модуль: 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) 

1 Ответ

0 голосов
/ 30 сентября 2018

Попробуйте подождать (только в первый раз!) ~ 300-500 мс после начала активности (т. Е. Перед первым вызовом), а затем позвоните emitHeart.

Я думаю, что вы можете видеть что-то вроде E/libEGL(8930): call to OpenGL ES API with no current context (logged once per thread) в вашем logcat выше / ниже вашей трассировки стека исключений.

Я не знаю истинную причину, и это может быть устройство или 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...