2017-08-22 8 views
1

これは私がApplicationクラスでやっているものです:createNewLayerBuilderを(使用して新しいCyborgControllerを追加しようとするとアプリケーションがクラッシュする)

@Override 
public void onCreate() { 
    super.onCreate(); 
    CyborgBuilder.startCyborg(new CyborgConfiguration(this, R.layout.cyborgview__auto_reply, BasicModulePack.class)); 
} 

これはcyborgview__auto_reply.xmlがどのように見えるかです:

<?xml version="1.0" encoding="utf-8"?> 
<com.nu.art.cyborg.core.CyborgView 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:cyborg="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
cyborg:controller="com.hedshafran.autoreply.controllers.Controller_PermissionScreen" 
cyborg:tag="Controller_Permission"/> 

これは、クラッシュを引き起こすController_PermissionScreenクラスで私がやっていることです:

createNewLayerBuilder().setControllerType(Controller_MainScreen.class).setLayoutId(R.layout.controller__main_screen).build(); 
E/AndroidRuntime: FATAL EXCEPTION: main 
Process: com.hedshafran.autoreply, PID: 17910 
java.lang.RuntimeException: Unable to resume activity {com.hedshafran.autoreply/com.nu.art.cyborg.core.CyborgActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'com.nu.art.cyborg.core.CyborgStackController$StackLayerBuilder com.nu.art.cyborg.core.CyborgStackController.createLayerBuilder()' on a null object reference 
    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3791) 
    at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3832) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1681) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:154) 
    at android.app.ActivityThread.main(ActivityThread.java:6682) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410) 
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'com.nu.art.cyborg.core.CyborgStackController$StackLayerBuilder com.nu.art.cyborg.core.CyborgStackController.createLayerBuilder()' on a null object reference 
    at com.nu.art.cyborg.core.CyborgController.createNewLayerBuilder(CyborgController.java:506) 
    at com.hedshafran.autoreply.controllers.Controller_PermissionScreen.onResume(Controller_PermissionScreen.java:35) 
    at com.nu.art.cyborg.core.CyborgController.dispatchLifeCycleEvent(CyborgController.java:270) 
    at com.nu.art.cyborg.core.CyborgActivityBridgeImpl.dispatchLifecycleEvent(CyborgActivityBridgeImpl.java:476) 
    at com.nu.art.cyborg.core.CyborgActivityBridgeImpl.onResume(CyborgActivityBridgeImpl.java:213) 
    at com.nu.art.cyborg.core.CyborgActivity.onResume(CyborgActivity.java:155) 
    at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1277) 
    at android.app.Activity.performResume(Activity.java:7088) 
    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3768) 
    at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3832)  
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1681)  
    at android.os.Handler.dispatchMessage(Handler.java:102)  
    at android.os.Looper.loop(Looper.java:154)  
    at android.app.ActivityThread.main(ActivityThread.java:6682)  
    at java.lang.reflect.Method.invoke(Native Method)  
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)  
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)  

どのように私はそのクラッシュを回避し、新しいCyborgControllerに適切な道を開くことができます。このようになりますクラッシュを引き起こし、?

<?xml version="1.0" encoding="utf-8"?> 
<com.nu.art.cyborg.core.CyborgView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:cyborg="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/CV_RootStack" 
    cyborg:controller="com.nu.art.cyborg.core.CyborgStackController" 
    cyborg:rootController="com.hedshafran.autoreply.controllers.Controller_PermissionScreen" 

    cyborg:rootTag="Controller_Permission" 
    cyborg:tag="RootStack" 
    /> 

ポイントは、このメソッドを呼び出して、コントローラがである場合にのみcreateNewLayerBuilder APIを使用することができます:そうのように、あなたのController_PermissionScreenが含まれていますCyborgStackConrollerを利用する必要があり

答えて

1

あなたcyborgview__auto_reply.xmlスタック。それ以外の場合は、getControllerById(R.id.CV_RootStack)を使用して、新しいレイヤービルダーを作成します。

+0

ありがとうございました。 –

関連する問題