0

ボタンのクリックで他のビューを表示する拡張機能を作成しています。アクティビティの起動に成功しましたが、onCreate アクティビティでコンテンツ ビューを設定していますが、このエラーが発生しています。そのアクティビティを、ネイティブ マニフェスト ファイルと、Android 用の flex のマニフェスト ファイルに含めました。

09-18 15:35:11.040: E/AndroidRuntime(7712): FATAL EXCEPTION: main
09-18 15:35:11.040: E/AndroidRuntime(7712): java.lang.RuntimeException: Unable to start activity ComponentInfo{air.TestAndroid.debug/com.aneexample.androiddialog.Second}: java.lang.NullPointerException
09-18 15:35:11.040: E/AndroidRuntime(7712):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
09-18 15:35:11.040: E/AndroidRuntime(7712):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
09-18 15:35:11.040: E/AndroidRuntime(7712):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
09-18 15:35:11.040: E/AndroidRuntime(7712):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
09-18 15:35:11.040: E/AndroidRuntime(7712):     at android.os.Handler.dispatchMessage(Handler.java:99)
09-18 15:35:11.040: E/AndroidRuntime(7712):     at android.os.Looper.loop(Looper.java:123)
09-18 15:35:11.040: E/AndroidRuntime(7712):     at android.app.ActivityThread.main(ActivityThread.java:3691)
09-18 15:35:11.040: E/AndroidRuntime(7712):     at java.lang.reflect.Method.invokeNative(Native Method)
09-18 15:35:11.040: E/AndroidRuntime(7712):     at java.lang.reflect.Method.invoke(Method.java:507)
09-18 15:35:11.040: E/AndroidRuntime(7712):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847)
09-18 15:35:11.040: E/AndroidRuntime(7712):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605)
09-18 15:35:11.040: E/AndroidRuntime(7712):     at dalvik.system.NativeStart.main(Native Method)
09-18 15:35:11.040: E/AndroidRuntime(7712): Caused by: java.lang.NullPointerException
09-18 15:35:11.040: E/AndroidRuntime(7712):     at com.aneexample.androiddialog.Second.onCreate(Second.java:19)
09-18 15:35:11.040: E/AndroidRuntime(7712):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
09-18 15:35:11.040: E/AndroidRuntime(7712):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)

これは、onCreate メソッドでコンテンツ ビューを設定する方法です。

@Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        Log.d(TAG, "create Second activity");
        super.onCreate(savedInstanceState);
        FREContext freContext = AndroidDialogExtension.context;
        setContentView(freContext.getResourceId("layout.second"));
    }
4

2 に答える 2

0

アクティビティから FREContext にアクセスするには、次のようなパブリック プロパティをアクティビティに作成します。

public static FREContext context=null;

次に、FREObject または FREFunction からアクティビティを開始する前に、次のように設定することを忘れないでください。

@Override
public FREObject call(FREContext context, FREObject[] arg1) {
...
MyActivity.context = context;
于 2015-03-06T20:54:34.810 に答える
0

FREFunction から FREContext を渡すか、どこかに静的変数として設定する必要があります。

私は次のようにします (私が作成した 2 つの ANE で非常に便利であることがわかりましたが、可能な限り静的変数を避けるようにしてください)。

public FREContext freContext;
public Boolean created = false;

@Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        Log.d(TAG, "create Second activity");
        super.onCreate(savedInstanceState);
        if ( freContext != null ) {
            setContentView(freContext.getResourceId("layout.second"));
        }
        created = true;
    }

public void setFREContext(FREContext context){
    freContext = context;
    //this ensures that the contentView is only set the one time. If you didn't do it this way, it could potentially run twice which is redundant and would quickly flash the screen black.
    if ( created ) { 
        setContentView(freContext.getResourceId("layout.second"));
    }
}

(これは、FREContext がヌル コメントであることに対応したものであり、その小さなコメント スペースにすべてが収まらないだけです)

于 2012-09-18T17:15:10.463 に答える