Как перезапустить активность Android?

Я создаю приложение на Android, но когда мне нужно обновить некоторые данные, я хочу перезапустить свою MainActivity. Но моя проблема, когда я пытаюсь перезапустить приложение, оно падает.

Я использую следующий код для перезапуска своей деятельности

 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

person diez    schedule 22.04.2013    source источник
comment
Намерение намерение1 = новое намерение (MainActivity.this, MainActivity.class); startActivity(намерение1); финиш();   -  person Raghunandan    schedule 22.04.2013
comment
Что-то не так с методом loadFilteredNames() в вашем коде при перезапуске. Опубликуйте этот код.   -  person S.D.    schedule 22.04.2013
comment
at com.___________.ApplicationManager.loadFilteredNames(ApplicationManager.java:228) Некоторая переменная в этой строке имеет значение null. Убедитесь, что вы инициализировали ее перед использованием. Я использовал приведенный выше тот же код для перезапуска, и он работал нормально. Так что, возможно, проблема связана с нулевой переменной. Пожалуйста, опубликуйте указанную выше строку.   -  person Rachita Nanda    schedule 22.04.2013
comment
Я думаю, что у вас есть конструктивный недостаток вашей системы в целом. Вам не нужно перезапускать активность, чтобы перезагрузить данные. Это просто не так, как это делается.   -  person Budius    schedule 22.04.2013
comment
Правильно, как говорит г-н Будиус, чтобы обновить только ваши данные, не заканчивайте и не запускайте активность снова и снова, это тяжелая задача для системы Android, это этот процесс Диспетчер активности, Диспетчер задач все будет включено, найдите другой способ обновления данных только если вы можете рассказать сценарий, мы можем помочь вам обновить данные об активности, а не воссоздавать их   -  person umesh    schedule 22.04.2013
comment
Здесь что-то не так. Я использую точный код, который опубликовал пользователь 1621629, и он отлично работает для меня. Чего-то не хватает.   -  person Edward Falk    schedule 12.01.2014
comment
Но при этом Будий прав; обычно вам не нужно перезапускать подобное действие. Я делаю это только тогда, когда меняю тему своего приложения.   -  person Edward Falk    schedule 12.01.2014


Ответы (2)


Используйте это, вы можете перезапустить активность.

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

Но согласно вашему требованию вам нужно воссоздать активность, используя this.recreate();

person user1621629    schedule 22.04.2013

попробуй так

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

startActivity(intent);

finish();
person MOK3K    schedule 22.04.2013