2016-03-03 3 views
1

Внутри моего SettingsActivity extends AppCompatActivity У меня есть SettingsFragment extends PreferenceFragment. Когда я пытаюсь нажать home-buttion на панели инструментов, он не работает. Вот мой кодГлавная кнопка не нажимается

toolbar.xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v7.widget.Toolbar 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/settingsToolbar" 
    android:layout_width="match_parent" 
    android:clickable="true" 
    android:focusable="true" 
    android:focusableInTouchMode="true" 
    android:layout_height="?android:actionBarSize" 
    android:background="@color/colorPrimary" /> 

SettingsActivity

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setupToolBar(); 
     getFragmentManager().beginTransaction() 
       .replace(android.R.id.content, new SettingsFragment()) 
       .commit(); 

    } 

    private void setupToolBar() { 
    getLayoutInflater().inflate(R.layout.toolbar, (ViewGroup) findViewById(android.R.id.content)); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.settingsToolbar); 
    setSupportActionBar(toolbar); 
    setTitle(getResources().getString(R.string.settings)); 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    toolbar.setFocusable(true); 

    toolbar.setNavigationOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      onBackPressed(); 
     } 
    }); 
} 

Я пытался решить таким образом: удалить setNavigationOnClickListener и добавить:

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

Это не помогает. Как я могу это исправить?

+0

Попробуйте удалить вызов 'toolbar.setNavigationOnClickListener()', он может пережить событие click, см. Здесь: http://stackoverflow.com/questions/28263643/tool-bar-setnavigationonclicklistener-breaks-actionbardrawertoggle-functionality –

ответ

0

добавить эту строку в конфигурации вашего getSupportActionBar:

getSupportActionBar().setHomeButtonEnabled(true); 

использовать как код в вашей деятельности, как показано ниже:

в методе setupToolbar:

toolbar.setNavigationOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
//    Log.d("cek", "home selected"); 
       finish(); 
      } 
     }); 

и в вашем onOptionsItemSelected метод:

if (item.getItemId() == android.R.id.home) { 
     finish(); 
    } 
    return super.onOptionsItemSelected(item); 
+0

кнопка home не нажата – Jackky777

+0

добавьте эту строку, чтобы настроить getSupportActionBar: 'getSupportActionBar(). setHomeButtonEnabled (true);' –

+0

Я пробовал это вчера. все еще не работает – Jackky777

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