it-swarm.com.ru

Установить панель инструментов как панель действий во фрагменте

Я хочу настроить свою панель инструментов как панель действий, но, поскольку ваша панель инструментов является элементом разметки, она должна быть в вашем макете. Теперь мой макет в моем фрагменте.

Я добавил панель инструментов в свой макет и назвал ее в своем фрагменте:

//Toolbar
Toolbar toolbar = (Toolbar) getActivity().findViewById(R.id.toolbar);

Это работает, потому что я могу установить заголовок и так далее, но теперь я хочу, чтобы он реагировал как панель действий, потому что я хочу иметь это на самом деле. setDisplayHomeAsUpEnabled (правда)

Для этого мне нужно изменить панель инструментов на панель действий:

setSupportActionBar(toolbar);

Это не работает в моем фрагменте ... 

Кто-нибудь может мне помочь заставить мою панель инструментов работать как панель действий во фрагменте.

34
Laurenswuyts

Теперь ActionBarActivity устарела, поэтому Сначала вам нужно преобразовать свою деятельность с getActivity() на AppCompatActivity. Вот пример:

((AppCompatActivity) getActivity()).getSupportActionBar().setSubtitle();

Причина, по которой вы должны его разыграть, заключается в том, что getActivity() возвращает FragmentActivity и вам нужна AppCompatActivity

47
Pratik Butani

пытаться:

 ((AppCompatActivity)getActivity()).setSupportActionBar(toolbar);
25
notdrone

ActionBar - это свойство Activity. Если вы хотите установить панель инструментов из данного фрагмента в качестве ActionBar принадлежащего Activity, то получите Activity, которая владеет фрагментом (Fragment.getActivity()), и установите его свойство ActionBar.

Затем используйте этот же метод setDisplayHomeAsUpEnabled, о котором вы упомянули, для начала на панели действий после установки панели инструментов в качестве панели действий для получения кнопки возврата/вверх.

Очевидно, вам придется тщательно управлять этим, если в вашем приложении есть несколько фрагментов в рамках этого действия.

16
dominicoder

Использование 

((ActionBarActivity) getActivity()).getSupportActionBar().setSubtitle("Your Title");
7
Ravi

Если вы используете Kotlin, попробуйте это:

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, state: Bundle?): View? { 
        (activity as AppCompatActivity).setSupportActionBar(your_toolbar)
        setHasOptionsMenu(true)

        return inflater.inflate(R.layout.your_layout, container, false)
}


override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) {
        inflater?.inflate(R.menu.your_menu, menu)
}
0
Miravzal

Допустим, активность, удерживающая фрагмент, - это MainActivity.

Делать 

MainActivity main = (MainActivity)getActivity();
//You can access all public variable and methods of MainActivity.
//simply call 
main.setSupportActionBar(toolbar)
main.getSupportActionBar.setTitle("title");
0
Micheal Mavericks