如何重新启动Android活动?

问题描述:

我正在Android中创建一个应用程序,但是当我想更新一些数据时,我想重新启动我的MainActivity。但是,当我尝试重新启动应用程序时出现问题,它崩溃了。如何重新启动Android活动?

我用下面的代码重新启动我的活动

case R.id.update: 
     admin = false; 
     Intent intent1 = getIntent(); 
     finish(); 
     startActivity(intent1);  
     break; 

我的日志是

04-22 12:28:10.444: E/AndroidRuntime(11867): FATAL EXCEPTION: main 
04-22 12:28:10.444: E/AndroidRuntime(11867): java.lang.RuntimeException: Unable to start activity ComponentInfo{package_____________/package________.LauncherGridActivity}: java.lang.NullPointerException 
04-22 12:28:10.444: E/AndroidRuntime(11867): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956) 
04-22 12:28:10.444: E/AndroidRuntime(11867): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 
04-22 12:28:10.444: E/AndroidRuntime(11867): at android.app.ActivityThread.access$600(ActivityThread.java:123) 
04-22 12:28:10.444: E/AndroidRuntime(11867): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 
04-22 12:28:10.444: E/AndroidRuntime(11867): at android.os.Handler.dispatchMessage(Handler.java:99) 
04-22 12:28:10.444: E/AndroidRuntime(11867): at android.os.Looper.loop(Looper.java:137) 
04-22 12:28:10.444: E/AndroidRuntime(11867): at android.app.ActivityThread.main(ActivityThread.java:4424) 
04-22 12:28:10.444: E/AndroidRuntime(11867): at java.lang.reflect.Method.invokeNative(Native Method) 
04-22 12:28:10.444: E/AndroidRuntime(11867): at java.lang.reflect.Method.invoke(Method.java:511) 
04-22 12:28:10.444: E/AndroidRuntime(11867): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
04-22 12:28:10.444: E/AndroidRuntime(11867): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
04-22 12:28:10.444: E/AndroidRuntime(11867): at dalvik.system.NativeStart.main(Native Method) 
04-22 12:28:10.444: E/AndroidRuntime(11867): Caused by: java.lang.NullPointerException 
04-22 12:28:10.444: E/AndroidRuntime(11867): at com.___________.ApplicationManager.loadFilteredNames(ApplicationManager.java:228) 
04-22 12:28:10.444: E/AndroidRuntime(11867): at com______.ApplicationManager.loadApplications(ApplicationManager.java:65) 
04-22 12:28:10.444: E/AndroidRuntime(11867): at co___.LauncherGridActivity.onCreate(LauncherGridActivity.java:142) 
04-22 12:28:10.444: E/AndroidRuntime(11867): at android.app.Activity.performCreate(Activity.java:4465) 
04-22 12:28:10.444: E/AndroidRuntime(11867): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
04-22 12:28:10.444: E/AndroidRuntime(11867): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920) 
04-22 12:28:10.444: E/AndroidRuntime(11867): ... 11 m 
+0

意向intent1 =新意图(MainActivity.this,MainActivity.class); startActivity(intent1);完(); – Raghunandan 2013-04-22 10:40:21

+0

重新启动时,代码中的loadFilteredNames()方法有问题。发布该代码。 – 2013-04-22 10:41:52

+1

at com.___________。ApplicationManager.loadFilteredNames(ApplicationManager.java:228) 此行的某些变量为null。请确保在使用之前初始化它。 我用上面相同的代码重新启动,它工作正常。所以也许问题是一个null变量。请发布上述指定的行 – 2013-04-22 10:43:48

使用此您可以重新启动活动。

Intent intent = getIntent(); 
finish(); 
startActivity(intent); 

但是按照您的要求,你需要使用重新创建活动this.recreate();

+0

用户已经尝试使用相同的代码。 – 2013-04-22 10:44:58

尝试这样

Intent intent = new Intent(YourActivityName.this,YourActivityName.class); 

startActivity(intent); 

finish();