2013-04-22 3 views
22

Я установил панель действий так, но ничего не происходит, когда я нажимаю кнопку «Домой». Включены два варианта, поэтому не следует ли автоматически переходить к домашней активности?Панель действия на панели действий Android

ab.setHomeButtonEnabled(true); 
ab.setDisplayHomeAsUpEnabled(true); 

Бар Действие

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.menu, menu); 

    final String[] activities; 
    Resources res = getResources(); 
    activities = res.getStringArray(R.array.activities); 

    ActionBar ab = getActionBar(); 
    ab.setHomeButtonEnabled(true); 
    ab.setDisplayHomeAsUpEnabled(true); 
    ab.setTitle(R.string.app_name); 
    ab.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); 
    ab.show(); 

    /** Create an array adapter to populate dropdownlist */ 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(getBaseContext(), android.R.layout.simple_spinner_dropdown_item, activities); 

    /** Setting dropdown items and item navigation listener for the actionbar */ 
    getActionBar().setListNavigationCallbacks(adapter, navigationListener); 

    /** Enabling dropdown list navigation for the action bar */ 
    getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); 
    return true; 
} 
+0

Проверить код в этой связи будет полезно. [Ссылка для кода] (http://stackoverflow.com/questions/11304483/proper-way-to-handle-action-bar-up-button/37692750#37692750) –

ответ

52

Как и другие люди говорят, поведение не происходит автоматически - вы должны сказать ему, куда идти.

Тем не менее, мне нужно добавить еще один ответ, так как текущие ответы все, нарушающие принципы дизайна Android - Back! = Home. См the documentation

То, что вы действительно хотите делать что-то вдоль линий этого:

@Override 
public boolean onOptionsItemSelected(MenuItem menuItem) { 
    switch (menuItem.getItemId()) { 
     case android.R.id.home: 
      Intent homeIntent = new Intent(this, HomeActivity.class); 
      homeIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
      startActivity(homeIntent); 
    } 
    return (super.onOptionsItemSelected(menuItem)); 
} 

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

+0

Большое спасибо, это то, что я искал, Я предположил, что когда он установлен в true, он просто вернется в основной класс! – user1875797

+7

+1 для «Назад!= Home "(Y) – Farhan

+2

Я не могу считать, что клиент настаивал на том, чтобы кнопка дома функционировала как назад, потому что она должна соответствовать потоку версии iOS приложения ... – npace

5

Вам нужно определить, что происходит здесь:

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

Добавьте эти строки в коде:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 

    switch (item.getItemId()) { 

    case android.R.id.home: 
     System.out.println("Pressed Back Button"); 
     break; 

    default: 
     return super.onOptionsItemSelected(item); 
    } 
    return false; 
} 
8

Вы РБП должны убедиться, что ваше приложение знает, что делать, когда она нажата:

@Override 
public boolean onOptionsItemSelected(MenuItem menuItem) { 
    switch (menuItem.getItemId()) { 
    case android.R.id.home: 
     // ProjectsActivity is my 'home' activity 
     super. onBackPressed(); 
     return true; 
    } 
    return (super.onOptionsItemSelected(menuItem)); 
} 
6

Мы должны определить мета-данные в нашей детской деятельности в AndroidManifast.xml файле в соответствии приведены в официальном document:

<application ... > 
... 
<!-- The main/home activity (it has no parent activity) --> 
<activity 
    android:name="com.example.myfirstapp.MainActivity" ...> 
    ... 
</activity> 
<!-- A child of the main activity --> 
<activity 
    android:name="com.example.myfirstapp.DisplayMessageActivity" 
    android:label="@string/title_activity_display_message" 
    android:parentActivityName="com.example.myfirstapp.MainActivity" > 
    <!-- The meta-data element is needed for versions lower than 4.1 --> 
    <meta-data 
     android:name="android.support.PARENT_ACTIVITY" 
     android:value="com.example.myfirstapp.MainActivity" /> 
</activity> 

Там нет необходимости определять мета-данные, если версия 4.1 или выше, и вы должны активируйте свою домашнюю панель действий, как это было в вашем коде. Нет необходимости использовать код кнопки обратной связи, и он отлично работает с моим приложением для Android: Helper+

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