2014-09-29 2 views
1

У меня есть Предпочтение для меню параметров в приложении для Android. Я включил навигацию Up \ Back на ActionBar, и мне нужно вернуться к предыдущему действию, которое называется меню «Параметры». Для Preference деятельности, я мог бы использовать в манифесте:Динамическая родительская активность для Android вверх назад Навигация в меню настроек

андроида: parentActivityName = "mypackage.com.MainActivity"

но как вернуться к другому activies? Меню «Параметры» вызывается из 4 различных видов деятельности.

public class Prefs extends PreferenceActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    addPreferencesFromResource(R.xml.preferences); 


    ActionBar actionBar = getActionBar(); 
    // Enabling Up/Back navigation 
    actionBar.setDisplayHomeAsUpEnabled(true); 


} 

}

ответ

0

решаемые таким образом:

@Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
     case android.R.id.home: 
       finish(); 

     } 
     return true; 

    } 
+0

это не будет перемещаться вверх от текущей задачи. это просто закрывает текущую активность –

0

поведение по умолчанию кнопки Назад, что это вернет вас к вызывающему деятельности. Система поддерживает задний стек действий, когда пользователь переводит приложение. Вам нужно переопределить эту функциональность? Пожалуйста, будьте более конкретными.

+0

да, но я должен сказать кнопку возврата в ActionBar вернуться к вызывающему деятельности (например, в физике обратно кнопки устройства) – andreasperelli

1

Убедитесь, что вы объявили родительскую активность в манифесте, как это ...

<activity 
      android:name="com.myapp.SetPreferenceActivity" 
      android:parentActivityName="com.myapp.MainActivity" 
      > 

, а затем убедитесь, чтобы добавить в ваш случай onOptionsItemВыбранный метод ...

@Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
     // Respond to the action bar's Up/Home button 
     case android.R.id.home: 
      //Take me back to the main activity 
      NavUtils.navigateUpFromSameTask(this); 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 

Если вы предпочитаете, чтобы кнопка «вверх» указывала на пользовательский acti Вы можете просто использовать намерение.

@Override 
     public boolean onOptionsItemSelected(MenuItem item) { 
      switch (item.getItemId()) { 
      // Respond to the action bar's Up/Home button 
      case android.R.id.home: 
       Intent changeActivity = new Intent(this,OtherActivity.class); 
     startActivity(changeActivity); 

       return true; 
      } 
      return super.onOptionsItemSelected(item); 
     } 
+0

Я не хочу всегда возвращаться к MainActivity. Если я вызываю Меню из SomeActivity.class, я хочу вернуться в SomeActivity.class ... Если я звоню в меню из OtherActivity.class, я хочу вернуться в OtherActivity.class – andreasperelli

+0

Я отредактировал свой ответ, чтобы включить возможность использовать намерение перейти к пользовательскому действию –

+0

Мне нужно знать во время выполнения действия, с которой я иду, чтобы вернуться к этому действию, которое называется Меню – andreasperelli