2016-04-06 2 views
4

Я разрабатываю приложение для Android. Я использую ActionBar с AppCompactActivity. В моем приложении я добавляю кнопку «Назад» в панель действий. Но когда я нажимаю на него, он не возвращается к предыдущему действию. Например, я запускаю действие 2 из действия 1. Действие 2 содержит панель действий с кнопкой «Назад». Но когда я нажимаю на панели действий назад кнопки деятельности 2, она не возвращается к деятельности 1.Дисплей обратной кнопки панели действий не возвращается в Android

Это, как я установил панель действий для деятельности 2:

public class EditProfileActivity extends AppCompatActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.edit_profile); 
     Toolbar toolbar = (Toolbar)findViewById(R.id.profile_action_toolbar); 
     setSupportActionBar(toolbar); 
     setTitle("Edit Profile"); 
     ActionBar actionBar= getSupportActionBar(); 
     actionBar.setDisplayHomeAsUpEnabled(true); 
    } 
} 

Это, как я начал деятельность 2 от деятельности 1:

Intent i = new Intent(MainActivity.this,SecondActivity.class); 
        startActivity(i); 

Он не собирается назад, когда я нажимаю эту кнопку

enter image description here

Почему он не возвращается?

ответ

16

Добавьте следующие строки в activity.You должны обрабатывать событие щелчка кнопки возврата.

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()){ 
     case android.R.id.home: 
       onBackPressed(); 
       return true; 
     } 
    return super.onOptionsItemSelected(item); 
} 
+0

Спасибо. Это сработало. Я скоро позову ответ. Но я уже поддержал. –

-1

Прежде всего, всегда см. Руководство Android http://developer.android.com/intl/pt-br/design/patterns/navigation.html, чтобы запретить Google блокировать приложения для Android.

Попробуйте добавить этот код в деятельности

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem menuItem) { 
    switch (menuItem.getItemId()) { 
     case android.R.id.home: 
      onBackPressed(); 
      break; 
    } 

    return super.onOptionsItemSelected(menuItem); 
} 

@Override 
public void onBackPressed() { 
    super.onBackPressed(); 
} 
0

Вы должны переопределить onOptionsItemSelected и проверить идентификатор элемента, если оно равно с идентификатором Коварно баттона, просто вызовите onBackPressed метод.

@Override 
     public boolean onOptionsItemSelected(MenuItem item) { 
      if (item.getItemId() == android.R.id.home) { 
       onBackPressed(); 
      } 
      return super.onOptionsItemSelected(item); 
     } 
0

Вы должны определить, что должно произойти при нажатии на эту кнопку, это может быть сделано в onOptionsItemSelected методе вашей второй активность в. Обратите внимание на константу android.R.id.home, которая ссылается на кнопку возврата активности, которую вы хотите использовать.

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 

    case android.R.id.home: 

     finish(); //close the activty 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 
5

Здесь у вас есть 2 варианта:

а) обеспечивают parentActivityName вашему SecondActivity тег в AndroidManifest.xml, как это:

<activity 
    ... 
    android:name=".SecondActivity" 
    android:parentActivityName=".MainActivity" > 

б) переопределить onOptionsItemSelected в SecondActivity, как это:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    // Respond to the action bar's Up/Home button 
    case android.R.id.home: 
     onBackPressed(); 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

I w ould предлагает прочитать this guide для получения дополнительной информации.

0

Вот ваш код

public class EditProfileActivity extends AppCompatActivity { 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 

      super.onCreate(savedInstanceState); 
      setContentView(R.layout.edit_profile); 
      Toolbar toolbar = (Toolbar)findViewById(R.id.profile_action_toolbar); 
      setSupportActionBar(toolbar); 
      setTitle("Edit Profile"); 
      ActionBar actionBar= getSupportActionBar(); 
      actionBar.setDisplayHomeAsUpEnabled(true); 
     } 

     @Override 
     public boolean onOptionsItemSelected(MenuItem item) { 
      int id = item.getItemId(); 
      if (item.getItemId() == android.R.id.home) { 
        finish(); 
      } 

      return super.onOptionsItemSelected(item); 
     } 
    }  
Смежные вопросы