2013-04-20 3 views
0

Итак, я знаю, что это может показаться простым, я имею в виду, я думал, что это так. Но по существу я хочу, чтобы метод restartActivity перезапустил активность.Создание кнопки перезапускает действие

Первое, что я сделал, это создать кнопку и иметь строку кода в xml как таковой. android:onClick="restartActivity"

тогда мой класс содержит метод restartActivity как таковой

public void restartActivity() 
{ 
    Intent intent= new Intent(this, MainActivity.class); 
    startActivity(intent); 
} 

Когда я пытаюсь это то, что в конечном итоге происходит это перестало работать диалоговое окно. Поэтому мой вопрос заключается в том, почему это не работает. Я убедился, что сделал кнопку перезапуска в правильном макете, я проверил, чтобы все необходимые ссылки были сделаны. И манифест андроида - все правильно. Только после того, как я добавил эти две строки, он начал сбой. Я также должен упомянуть, что мой целевой апи - 8, и один из предложенных ответов был api 11 или выше. Как затмение «любезно» дайте мне знать.

+0

Пожалуйста, добавьте ошибку вы получите. Закрываете ли вы активность, прежде чем запускать ее снова? –

+0

Вы пытались использовать метод recreate? – Daniel

+0

Ответы ниже помогут с вашей проблемой, но я думаю, вы должны убедиться, что это то, что вы хотите сделать. Если вам нужно обновить данные 'View' или update, тогда есть лучшие способы.Существует не так много причин, чтобы полностью перезапустить «Активность» изнутри себя. – codeMagic

ответ

0

ваш щелчок может понравиться

public void restartActivity(View view) 
    { 
     // do your work Here 
     Intent intent= new Intent(currentActivity.this, MainActivity.class); 
     startActivity(intent); 
    } 
1

контекст использования активности. Вы имеете в виду это нажатием кнопки. Это относится к текущему контексту, который является кнопкой в ​​вашем случае.

Intent intent= new Intent(ActivityName.this, MainActivity.class); 

Это создаст новый экземпляр той же деятельности.

Скажите, что у вас есть MainActivity. Это на спине

На кнопку нажмите кнопку Пуск, такую ​​же активность и вызвать отделку()

Intent t= new Intent(MainActivity.this,MainActivity.class); 
startActivity(t); 
finish(); 

Edit:

В вашей первой активности говорят на кнопку мыши

Intent t= new Intent(FirstActivity.this,SecondActivity.class); 
startActivity(t); 
finish(); 

В ваше второе действие при нажатии кнопки

Intent t= new Intent(SecondActivity.this,FirstActivity.class); 
startActivity(t); 
finish(); 
+0

Итак, подожди, все ли идет в методе onClick во втором упражнении? Я предполагаю, какой код я мог бы запустить из своего второго действия, чтобы перезапустить первое действие? Думаю, это будет лучший способ сделать это. –

+0

Вы можете сделать то же самое во втором действии. Но будет создан новый экземпляр этой деятельности. Вам нужно очистить задний стек, если в этом случае. – Raghunandan

2
класс

активность уже предоставляет этот метод:

public void recreate() 

С: Уровень API 11 Причина Активности быть воссозданы с новым экземпляром. Это приводит, по существу, к тому же потоку, что и при создании Activity из-за изменения конфигурации - текущий экземпляр перейдет через свой жизненный цикл в onDestroy() и затем создаст новый экземпляр, созданный после него.

Так что вы можете сделать что-то вроде этого,

public void Restart() 
{ 
    this.recreate(); 
} 

Если вы находитесь за пределами деятельности, то просто:

public void Restart(Context ctx) 
    { 
     Activity a = (Activity)ctx; 
     ctx.recreate(); 
    } 
Смежные вопросы