2012-05-03 2 views
3

У меня есть два действия в приложении для Android, у каждого есть кнопка, которая переходит на другую активность (по методу startActivity()). Во втором действии у меня есть текст редактирования (адресная строка URL) и веб-представление.Скрыть активность в android

Итак, когда я нажимаю кнопку активности1, чтобы начать Activity2, я получаю activity2 с веб-представлением. Затем я набираю cnn.com (например) в адресной строке, и мой веб-просмотр отображает веб-сайт cnn.com. После этого я нажимаю кнопку, чтобы перейти от activity2 к activity1. Если я снова нажимаю кнопку активности1, я запускаю Activity2. Но activity2 только что был создан, я имею в виду, что текст редактирования и веб-представление пустые.

Что я хочу: если я вернусь из activity1 в activity2, я хочу, чтобы activity2 сохранил последнее состояние: текст редактирования должен содержать cnn.com, и веб-просмотр должен показывать веб-сайт CNN. Так что мне нужно не бросить activity2 перед запуском activity1, а что-то вроде просто скрыть его и запустить activity2, так что, если я снова вернусь к нему, я получу его последнее состояние. (Например, когда я нажимаю кнопку «домой».) Как я могу это достичь?

ответ

7

Это предложение, чтобы решить вашу проблему.

, когда вы переходите от Button, который находится в действии два. Теперь вы находитесь в действии, убедитесь, что, когда вы переходите от действия два к одному, он не должен заканчивать действие два.

Теперь, когда вы хотите вернуться к Занятой два Итак, вам нужно назвать свою деятельность следующим образом.

  Intent mIntent=new Intent(yourActivityOne1.this, YourActivity2.class); 
    mIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    mIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
    startActivity(mIntent); 

так, что этот код делать это сделает процесс, чтобы прийти первым, не создавая новый экземпляр деятельности, и вы можете видеть, что ваш последний загруженный сайт там.

+0

выглядит интересным, но как «убедиться, что, когда вы переходите от действия два к одному, он не должен заканчивать вторую операцию». –

+2

просто просто отмените кнопку кнопки «Назад» в своей активности, потому что в андроиде, если вы нажмете клавишу «Назад», она завершит вашу деятельность. Вы можете использовать этот код @Override public boolean onKeyDown (int keyCode, событие KeyEvent) { if (keyCode == KeyEvent.KEYCODE_BACK) { Цель намерения = новый намерение (ActivityTwo.this, ActivityOne.class); intent.addFlags (Intent.FLAG_ACTIVITY_SINGLE_TOP); startActivity (намерение); } return super.onKeyDown (keyCode, event); } – Herry

+0

просто не вызывайте метод завершения, когда вы переходите от операции два к одному. – Herry

1

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

активность 2 будет выглядеть как :

onPause(){ 
    SharedPreferences settings = getSharedPreferences("MyPreferences", MODE_PRIVATE); 
    SharedPreferences.Editor prefEditor = settings.edit(); 
    prefEditor.putString("activity2Text", textField.getText().toString()); 
    prefEditor.commit(); 
} 

onCreate(){ 
     ..... 
    SharedPreferences settings = getSharedPreferences("MyPreferences", MODE_PRIVATE); 
    textField.setText(settings.getString("activity2Text","")); 
} 
+0

я не хочу сохранить данные где-то и перезагрузить веб-страницы из-за производительности, я хочу просто вернуться в последнее состояние без перезагрузки веб-страницы. –

1

Он не закончит свою деятельность на BackPressed он будет вести себя, как дома Баттона

Вы можете изменить его .. это может помочь не finsih

@Override 
public void onBackPressed() 
    { 

    Log.d("CDA", "onBackPressed Called"); 
    Intent setIntent = new Intent(Intent.ACTION_MAIN); 
    setIntent.addCategory(Intent.CATEGORY_HOME); 
    setIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    startActivity(setIntent); 
    } 
Смежные вопросы