0

我正在尝试从活动组启动一项活动。以下是我使用的代码:

public void replaceContentView() {
    Intent i = new Intent(SummaryCostScreen.this,PermissionsScreen.class);
    View view = getLocalActivityManager().startActivity("activity9",i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)).getDecorView();
    this.setContentView(view);
    } 

我得到空指针异常,如图所示:

05-15 09:49:23.367: D/AndroidRuntime(3872): Shutting down VM
05-15 09:49:23.367: W/dalvikvm(3872): threadid=1: thread exiting with uncaught exception (group=0x40b1a1f8)
05-15 09:49:23.382: E/AndroidRuntime(3872): FATAL EXCEPTION: main
05-15 09:49:23.382: E/AndroidRuntime(3872): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.nykkos.personalize/com.nykkos.personalize.launcher.screens.PermissionsScreen}: java.lang.NullPointerException
05-15 09:49:23.382: E/AndroidRuntime(3872):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1964)
05-15 09:49:23.382: E/AndroidRuntime(3872):     at android.app.ActivityThread.startActivityNow(ActivityThread.java:1799)
05-15 09:49:23.382: E/AndroidRuntime(3872):     at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:135)
05-15 09:49:23.382: E/AndroidRuntime(3872):     at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:347)
05-15 09:49:23.382: E/AndroidRuntime(3872):     at com.nykkos.personalize.launcher.screens.SummaryCostScreen.replaceContentView(SummaryCostScreen.java:255)
05-15 09:49:23.382: E/AndroidRuntime(3872):     at com.nykkos.personalize.launcher.screens.SummaryCostScreen.onClick(SummaryCostScreen.java:116)
05-15 09:49:23.382: E/AndroidRuntime(3872):     at android.view.View.performClick(View.java:3480)
05-15 09:49:23.382: E/AndroidRuntime(3872):     at android.view.View$PerformClick.run(View.java:13993)
05-15 09:49:23.382: E/AndroidRuntime(3872):     at android.os.Handler.handleCallback(Handler.java:605)
05-15 09:49:23.382: E/AndroidRuntime(3872):     at android.os.Handler.dispatchMessage(Handler.java:92)
05-15 09:49:23.382: E/AndroidRuntime(3872):     at android.os.Looper.loop(Looper.java:137)
05-15 09:49:23.382: E/AndroidRuntime(3872):     at android.app.ActivityThread.main(ActivityThread.java:4368)
05-15 09:49:23.382: E/AndroidRuntime(3872):     at java.lang.reflect.Method.invokeNative(Native Method)
05-15 09:49:23.382: E/AndroidRuntime(3872):     at java.lang.reflect.Method.invoke(Method.java:511)
05-15 09:49:23.382: E/AndroidRuntime(3872):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
05-15 09:49:23.382: E/AndroidRuntime(3872):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
05-15 09:49:23.382: E/AndroidRuntime(3872):     at dalvik.system.NativeStart.main(Native Method)
05-15 09:49:23.382: E/AndroidRuntime(3872): Caused by: java.lang.NullPointerException
05-15 09:49:23.382: E/AndroidRuntime(3872):     at com.nykkos.personalize.launcher.screens.PermissionsScreen.onCreate(PermissionsScreen.java:48)
05-15 09:49:23.382: E/AndroidRuntime(3872):     at android.app.Activity.performCreate(Activity.java:4465)
05-15 09:49:23.382: E/AndroidRuntime(3872):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
05-15 09:49:23.382: E/AndroidRuntime(3872):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1928)
05-15 09:49:23.382: E/AndroidRuntime(3872):     ... 16 more

Nullpointer 从

getLocalActivityManager().startActivity("activity9",i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)).getDecorView();

这个空指针的原因可能是什么,尽管我看不到任何明显的原因。

任何帮助深表感谢。

4

3 回答 3

1

请使用更好的方法片段

此类在 API 级别 13 中已弃用。请改用新的 Fragment 和 FragmentManager API;这些也可以通过 Android 兼容包在旧平台上使用。

http://developer.android.com/reference/android/app/ActivityGroup.html

于 2013-05-15T10:32:44.333 回答
1

从我从 logcat 描述中可以看出,第48 行的PermissionsScreen类方法中有一个异常。onCreate()

于 2013-05-15T10:33:06.643 回答
1
Activity ac = (Activity) context;   
ActivityGroup ag = (ActivityGroup) ac.getParent();   
Intent i = new Intent(SummaryCostScreen.this,PermissionsScreen.class);
View view =  ag.getLocalActivityManager().startActivity("activity9",i.addFlags
(Intent.FLAG_ACTIVITY_CLEAR_TOP)).getDecorView();
this.setContentView(view);

试试这个。

于 2013-05-15T10:36:41.343 回答