2016-02-20 2 views
5

У меня есть основное действие A (PlacesListActivity). Он вызывает активность B (AboutMeActivity) из навигационного ящика. Я объявил активность А как родительскую активность B в манифесте.Нужно дважды нажать кнопку «Назад» для перехода от операции

Теперь, когда я иду от A-> B,

  • если я нажать на стрелку в панели действий, она возвращает меня к деятельности А.

  • относительно аппаратной кнопки , Я должен нажать его дважды, чтобы вернуться к активности A. Когда я нажимаю аппаратные средства один раз, ничего не происходит. Кажется, он просто перезагружает активность B. Мне это не нужно. Однократное нажатие аппаратной кнопки должно выполнять эту работу.

Код для деятельности B:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_about_me); 
    initialize(); 
} 

private void initialize() { 
    toolbar = (Toolbar) findViewById(R.id.toolbarAboutMe); 
    setSupportActionBar(toolbar); 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    ..... 
} 

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

Код для вызова активности B:

@Override 
public void onDrawerItemSelected(View view, int position) { 
    Intent i; 
    switch (position) { 
     case 0: 
      i = new Intent(this, AboutMeActivity.class); 
      startActivity(i); 
      break; 
      ...... 

Manifest:

<activity 
     android:name="....AboutMeActivity" 
     android:parentActivityName="....PlacesListActivity"> 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="....PlacesListActivity" /> 
    </activity> 

Edit:

Я попытался с наиважнейшей OnBackPressed(), но он никогда не вызывается.

пытался с наиважнейшей OnKeyDown() и призывая finish() в этом, но все же, я должен нажать дважды, чтобы вернуться к деятельности А.

+2

находится в деятельности B в Softkeyboard активной или что-то еще в центре внимания, то самой деятельности? Если u переопределяет OnBackPressed() в Activity B, он должен работать отлично, когда активность сосредоточена. – Manu

+0

Вы решили эту проблему? – VLeonovs

ответ

1

В моем случае, компонент поиска имел фокус при нажатии кнопки

оборудование назад

Выполнение этой задачи:

override fun onResume() { 
    super.onResume() 
    searchInputView?.clearFocus() //searchInputView is initialized in onCreateOptionsMenu 
} 

Так вообще говоря, убедитесь, что кнопка Спинка correclty пойманной активностью и не подкомпонентой вашей деятельности

0

Может просто переопределить onBackPressed метод.

@Override 
public void onBackPressed() { 
    finish(); 
} 

также иметь в виду BackStack

+0

Отредактировал мой вопрос. – Yashasvi

0

Handle onBackPressed событие в деятельности B

@Override 
    public void onBackPressed() {  
      super.onBackPressed(); 
      finish(); // to close this activity 
      //finish() or start another activity 
    } 
+0

Отредактировал мой вопрос. – Yashasvi

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