2015-05-10 4 views
4

Расширение FragmentActivity в классе, который служит в качестве моей базовой деятельности, где мои другие действия распространяются. Моя проблема в том, что я расширяю свои другие действия из своей основной деятельности, теряя функциональность панели инструментов. Как я могу добавить это в свою базовую активность, чтобы мои действия могли наследовать панель инструментов? Любые указатели?Добавление панели инструментов в FragmentActivity

+0

вы имеете в виду ActionBar? –

+2

Нет. Я знаю, как добавить панель действий. Я имею в виду панель инструментов. – codeFreak

ответ

1

В случае, если фрагменты должны иметь пользовательский вид ToolBar, вы можете реализовать ToolBar для каждого фрагмента отдельно.

добавить ToolBar в fragment_layout:

<android.support.v7.widget.Toolbar 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="?attr/colorPrimaryDark"/> 

найти его в фрагменте:

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.fragment, container, false); 
     Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar); 

     //set toolbar appearance 
     toolbar.setBackground(R.color.material_blue_grey_800); 

     //for crate home button 
     ActionBarActivity activity = (ActionBarActivity) getActivity(); 
     activity.setSupportActionBar(toolbar); 
     activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
} 

меню слушатель может быть создан двумя способами:

1.override onOptionsItemSelected в вашем фрагменте:

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

2.Set слушатель для панели инструментов при создании его в onCreateView():

toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() { 
      @Override 
      public boolean onMenuItemClick(MenuItem menuItem) { 
       return false; 
      } 
}); 
+0

Вы имеете в виду, что я должен расширить фрагменты вместо расширения FragmentActivity для моей базовой активности? – codeFreak

+0

Ya u может попробовать это –

+0

Это не сработает, потому что фрагменты требуют приложения для работы. FragmentActivity, где используется предварительно сотовый. Honeycomb выше требует активности – codeFreak

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