2013-10-03 2 views
2

Я делаю простое приложение для Android с двумя видами деятельности. одна MainActivity и одна InfoActivity. У меня есть кнопка на моем ActionBar, и при нажатии я хочу открыть свою InfoActivity. В моей InfoActivity у меня есть кнопка возврата, которая удаляет мою InfoActivity и снова открывает мою MainActivity. Могу ли я открыть InfoActivity без закрытия моей MainActivity?Открыть информацию Деятельность без закрытия Основная деятельность

Я разобрал JSON из Интернета в мою главную деятельность, и я не хочу, чтобы он загружал все снова, когда я закрываю InfoActivity.

Код для открытия InfoActivity:

private View.OnClickListener onInfoBtnClick = new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      Intent intent = new Intent(MainActivity.this, InfoActivity.class); 
      startActivity(intent); 
     } 
    }; 

Код для закрытия InfoActivity в InfoActivity классе:

private View.OnClickListener onBackBtnClick = new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Intent intent = new Intent(InfoActivity.this, MainActivity.class); 
     startActivity(intent); 
    } 
}; 
+1

в вашей задней кнопке нажмите кнопку завершения(); вместо намерения – Aerrow

+0

Так просто. Большое спасибо! – Jojo

ответ

3

Могу ли я открыть InfoActivity, не закрывая мою MainActivity?

Нет, InfoActivity будет вызываться на переднем плане и MainActivity в фоновом режиме, поскольку он будет находиться в состоянии stopped. Проблема в том, что если вы стреляете в Intent в свою InfoActivity, так будет новый экземпляр MainActivity, кроме старого экземпляра.

Добавьте флаг к вашему намеренному вызову, чтобы предотвратить появление нового экземпляра MainActivity. Затем он будет вызываться из стека.

private View.OnClickListener onBackBtnClick = new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Intent intent = new Intent(InfoActivity.this, MainActivity.class); 
     intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     startActivity(intent); 
    } 
}; 

Или простой вызов finish(), как Хамада и Aerrow предложил. Затем InfoActivity будет уничтожен, и MainActivity будет вызван из стека.

+0

Большое спасибо! – Jojo

1

запуска информационной деятельности с использованием

Intent i = new Intent(MainActivity.this, InfoActivity.class); 
startActivityForResult(i, 1); 

и в infoactivity просто позвоните finish() на кнопку нажмите, не запускайте активность снова. Затем вы вернетесь к предварительному vious activity

Смежные вопросы