0

Extra.class からインテントを呼び出す関数を実装しています。inter = new intent(this, class); を実行する代わりに 以下に示すように、何度かカスタムが必要です。しかし、たとえば Extra.toClass(context, Act.class); を呼び出すと、エラーログが生成されます。

android.content.Context をインポートします。android.content.Intent をインポートします。

public class Extra extends Activity {

    private static Context context;
    private static Class<?> activity;
    private static Intent intx;

    public static void toClass(Context text,Class<?> a){

        text = context;
        a = activity;

        intx = new Intent(text,a);
        context.startActivity(intx);

    }
}

これは私のログです

05-31 09:56:26.128: E/AndroidRuntime(1545): FATAL EXCEPTION: main
05-31 09:56:26.128: E/AndroidRuntime(1545): java.lang.RuntimeException: Unable to start activity ComponentInfo{.app/.app.CompteCompagnon}: java.lang.NullPointerException
05-31 09:56:26.128: E/AndroidRuntime(1545):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
05-31 09:56:26.128: E/AndroidRuntime(1545):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
05-31 09:56:26.128: E/AndroidRuntime(1545):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
05-31 09:56:26.128: E/AndroidRuntime(1545):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
05-31 09:56:26.128: E/AndroidRuntime(1545):     at android.os.Handler.dispatchMessage(Handler.java:99)
05-31 09:56:26.128: E/AndroidRuntime(1545):     at android.os.Looper.loop(Looper.java:130)
05-31 09:56:26.128: E/AndroidRuntime(1545):     at android.app.ActivityThread.main(ActivityThread.java:3687)
05-31 09:56:26.128: E/AndroidRuntime(1545):     at java.lang.reflect.Method.invokeNative(Native Method)
05-31 09:56:26.128: E/AndroidRuntime(1545):     at java.lang.reflect.Method.invoke(Method.java:507)
05-31 09:56:26.128: E/AndroidRuntime(1545):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
05-31 09:56:26.128: E/AndroidRuntime(1545):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
05-31 09:56:26.128: E/AndroidRuntime(1545):     at dalvik.system.NativeStart.main(Native Method)
05-31 09:56:26.128: E/AndroidRuntime(1545): Caused by: java.lang.NullPointerException
05-31 09:56:26.128: E/AndroidRuntime(1545):     at android.content.ComponentName.<init>(ComponentName.java:75)
05-31 09:56:26.128: E/AndroidRuntime(1545):     at android.content.Intent.<init>(Intent.java:2863)
05-31 09:56:26.128: E/AndroidRuntime(1545):     at .app.util.extra.Extra.toClass(Extra.java:18)
05-31 09:56:26.128: E/AndroidRuntime(1545):     at .app.CompteCompagnon.onCreate(CompteCompagnon.java:44)
05-31 09:56:26.128: E/AndroidRuntime(1545):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
05-31 09:56:26.128: E/AndroidRuntime(1545):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
05-31 09:56:26.128: E/AndroidRuntime(1545):     ... 11 more
05-31 09:56:26.132: E/(136): Dumpstate > /data/log/dumpstate_app_error
05-31 09:56:32.742: E/(279): onResume() check 0
05-31 09:56:32.742: E/(279): onResume() check 1
05-31 09:56:32.742: E/Launcher(279): setWindowOpaque()
05-31 09:56:32.796: E/(279): onResume() check 2, mRestoring : false
05-31 09:56:32.800: E/(279): onResume() check 3
05-31 09:56:32.800: E/(279): onResume() check 4
05-31 09:56:32.800: E/(279): onResume() check 5
4

3 に答える 3

1

静的変数を削除してください。それらはメモリリークを引き起こします。

public class Extra extends Activity {

    public static void toClass(Context text,Class<?> a){

        Intent intx = new Intent(text,a);
        text.startActivity(intx);

    }
}

とにかく、あなたの問題は、それらを間違った方法で割り当てていたことです。

于 2013-05-31T06:04:00.713 に答える
1

ログから、 の呼び出し時に NPE がスローされることがわかりますintx = new Intent(text,a);。したがって、おそらくtextまたはaですnull。その理由は、パラメータに初期化されtext = contextていない属性を割り当てるためです。あなたはそれを別の方法で望んでいます。(および)に変更します。contexttextcontext = textactivity = a

于 2013-05-31T06:04:23.243 に答える
1

次のように試してください:

public static void toClass(Context text,Class<?> a){
        this.context=text;
        this.activity=a;
        intx = new Intent(text,a);
        context.startActivity(intx);
    }

toClassメソッドのパラメーター値をクラス変数に割り当てていないため

于 2013-05-31T06:00:59.917 に答える