Вопросы с тегами [android-navigation-drawer]

0

голосов
0

ответ
5

Просмотры

Как сделать список прокрутки элементов в меню, в группе, в деятельности водителя навигации?

Я добавляю мое приложение активности водителя навигации. Мне нужен список пунктов меню для прокрутки в пределах группы. У меня была идея, чтобы сделать это с ListView, но я не нашел способ ее реализации. Может быть, кто-то решил эту проблему и скажите мне, что нужно сделать, чтобы список элементов, входящих в группу прокручивается. Вот пример кода: ....
DinaD
1

голосов
1

ответ
587

Просмотры

Фрагмент навигации ящик постоянно возвращается нуль

У меня возникли проблемы с настройкой моего приложения, так что он не откажет при запуске. Я создал несколько мероприятий и сделал фрагмент панели навигации, чей макет я хранится в отдельном XML-файл и включить его в макетах для каждого вида деятельности. Это работает, пока я не играл с другим файлом .xml для одной деятельности, которая не является пусковой деятельностью. Был ошибка в Gradle сборки таким образом, что приложение, которое было загружено на телефон была установлена ​​предыдущая версия (изменения, которые я сделал, не были включены в сборку, по какой-то причине). Это часто случается у меня (в Android Studio) и моя Обходной удалить приложение с телефона и переустановить его, запустив его в Android Studio. Однако после того, как сделать это, у меня были некоторые странные результаты. Теперь я даже не могу начать свой андроид приложения. Я получаю ошибку пустого указателя, когда попытки кода к java.lang.NullPointerException: Попытка вызвать виртуальный метод «android.view.ViewGroup $ LayoutParams android.view.View.getLayoutParams ()» на нулевой ссылки на объект строки, в которой он выходит из строя на тот, где он пытается открыть ящик, если пользователь открывает приложение в первый раз, кажется, containerView которая становится нулевой: общественного недействительной нАлАдкА (интермедиат fragmentID, окончательный drawerLayout drawerLayout, панель инструментов) {mDrawerLayout = drawerLayout; containerView = getActivity () findViewById (fragmentID). если {mDrawerLayout.openDrawer (containerView) (mUserLearnedDrawer && mFromSavedInstanceState!); }} Эта функция установки называется в моей MainActivity (в OnCreate метод): NavigationDrawerFragment drawerFragment = (NavigationDrawerFragment) getSupportFragmentManager () findFragmentById (R.id.drawer_layout_declared). drawerFragment.setUp (R.id.drawer_layout_declared, (DrawerLayout) findViewById (R.id.drawer_layout_home), панель инструментов); Теперь я включил панель навигации в моем файле макета, как это. Где это второй ребенок элемента android.support.v4.widget.DrawerLayout Это содержимое файла navigation_drawer_declaration.xml. Я считаю, что это вещь, которая должна быть ссылкой при добавлении панели навигации для fragmentID. Я вошел значение файла ресурса, который вернулся в 2131492942, является ли это целое значение для ненулевого макета? Во всяком случае, я думал, что это было странно, как пришла эта ошибка о, так как я работал над совершенно несвязанной кусок кода в котором происходила ошибка. Я удалил файлы, которые я работал, так как в последний раз приложение побежало, и это не имеет никакого значения. Любая помощь очень ценится. EDIT: Обратите внимание, что я добавил объект ActionBarDrawerToggle к моему drawerToggle:. Это что ниже моей containerView = getActivity () findViewById (fragmentID) Линия mDrawerToggle = новый ActionBarDrawerToggle (getActivity (), drawerLayout, панель инструментов, R.string.drawer_open , R.string.drawer_closed) {@Override общественного недействительными onDrawerOpened (View drawerView) {super.onDrawerOpened (drawerView); если (mUserLearnedDrawer!) {mUserLearnedDrawer = TRUE; saveToPreferences (getActivity (), KEY_USER_LEARNED_DRAWER, mUserLearnedDrawer + ""); .} GetActivity () invalidateOptionsMenu (); } @Override общественного недействительными onDrawerClosed (View drawerView) {super.onDrawerClosed (drawerView); . GetActivity () invalidateOptionsMenu (); }}; если {mDrawerLayout.openDrawer (containerView) (mUserLearnedDrawer && mFromSavedInstanceState!); } MDrawerLayout.setDrawerListener (mDrawerToggle); mDrawerLayout.post (новый Runnable () {@Override общественный недействительный запуск () {mDrawerToggle.syncState ();}}); mFromSavedInstanceState) {mDrawerLayout.openDrawer (containerView); } MDrawerLayout.setDrawerListener (mDrawerToggle); mDrawerLayout.post (новый Runnable () {@Override общественный недействительный запуск () {mDrawerToggle.syncState ();}}); mFromSavedInstanceState) {mDrawerLayout.openDrawer (containerView); } MDrawerLayout.setDrawerListener (mDrawerToggle); mDrawerLayout.post (новый Runnable () {@Override общественный недействительный запуск () {mDrawerToggle.syncState ();}});
user2795329
1

голосов
1

ответ
90

Просмотры

Как создать ListView в фрагменте, который является частью панели навигации

Ниже приведен фрагмент, который находится в навигационном ящике, который я пытающийся сделать ListView. Однако есть ошибка на этих 2-х линий, тот, который начинается с setlistadapter и ListView. Он говорит, что это ошибка есть на тех. Как бы я идти о ее исправлении. Ошибка: (29, 9) Ошибка: не удается найти метод символ setListAdapter (ArrayAdapter) Ошибка: (30, 25) Ошибка: не удается найти метод символ getListView () Примечание: Некоторые входные файлы используют или переопределить устаревший API. Примечание: Recompile с -Xlint: Deprecation для деталей. Ошибка: Не удалось завершить выполнение задачи для ': приложение: compileDebugJavaWithJavac. Компиляция не удалось; увидеть вывод ошибок компилятора для деталей. общественный класс Первый расширяет Fragment {View MyView; @Nullable String [] = {курсы "1", "2", "3"}; @Override общественного недействительный OnCreate (Пачка savedInstanceState) {super.onCreate (savedInstanceState); } @Override общественные недействительный onActivityCreated (Пачка savedInstanceState) {super.onActivityCreated (savedInstanceState); setListAdapter (новый ArrayAdapter (getActivity (), android.R.layout.simple_list_item_1, курсы)); Список ListView = getListView (); list.setTextFilterEnabled (истина); list.setOnItemClickListener (новый AdapterView.OnItemClickListener () {@Override общественного недействительными onItemClick (AdapterView arg0, Вид вид, внутр arg1, долго арг2) {переключатель (arg1) {случай 0: Намерение myIntent0 = новый Intent (view.getContext (), Test.class); startActivityForResult (myIntent0, 0); перерыв; случай 1: Намерение myIntent1 = новое Намерение (view.getContext (), Test.class); startActivityForResult (myIntent1, 0); перерыв; Случай 2: Намерение myIntent2 = новое Намерение (view.getContext (), Test.class); startActivityForResult (myIntent2, 0); перерыв; }}}); } Публичного просмотра onCreateView (LayoutInflater инфлятор, ViewGroup контейнер, Пачка savedInstanceState) {MyView = inflater.inflate (R.layout.math, контейнер, ложь); вернуться MyView; }} 0); перерыв; }}}); } Публичного просмотра onCreateView (LayoutInflater инфлятор, ViewGroup контейнер, Пачка savedInstanceState) {MyView = inflater.inflate (R.layout.math, контейнер, ложь); вернуться MyView; }} 0); перерыв; }}}); } Публичного просмотра onCreateView (LayoutInflater инфлятор, ViewGroup контейнер, Пачка savedInstanceState) {MyView = inflater.inflate (R.layout.math, контейнер, ложь); вернуться MyView; }}
user4914918
1

голосов
1

ответ
538

Просмотры

Обновление TextView в NavigationDrawer после ввода от пользователя в предыдущей деятельности

Существует некоторая информация, которую я хочу, чтобы отобразить в NavigationDrawer. Эта информация вводится пользователем в предыдущей деятельности. Я использую намерение послать информацию к основному виду деятельности за полку. MainActivity (После того, как пользователь ввел подробности) общественного класса MainActivity расширяет AppCompatActivity реализует FragmentDrawer.FragmentDrawerListener {частный статический строка TAG = MainActivity.class.getSimpleName (); частная панель mToolbar; частный FragmentDrawer drawerFragment; @Override защищены недействительный OnCreate (Пачка savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); Намерение Намерение = getIntent (); Строка информация = intent.getStringExtra ( "Информация"); mToolbar = (панель) findViewById (R.id.toolbar); setSupportActionBar (mToolbar); getSupportActionBar (). setDisplayShowHomeEnabled (истина); drawerFragment = (FragmentDrawer) getSupportFragmentManager () findFragmentById (R.id.fragment_navigation_drawer). drawerFragment.setUp (R.id.fragment_navigation_drawer, (DrawerLayout) findViewById (R.id.drawer_layout), mToolbar); drawerFragment.setDrawerListener (это); // выводит первый вид панели навигации по запуску приложения DisplayView (0); } @Override общественного логический onCreateOptionsMenu (меню Menu) {// Накачайте меню; это добавляет элементы в панели действий, если он присутствует. . GetMenuInflater () надуваться (R.menu.menu_main, меню); возвращает истину; } @Override общественного логический onOptionsItemSelected (MenuItem элемент) {// Handle панели действий пункт щелкает здесь. Панель действий будет // автоматически обрабатывать клики по кнопке Home / Up, так долго, как вы // указать родительскую активность в AndroidManifest.xml. INT ID = item.getItemId (); // noinspection SimplifiableIfStatement если (идентификатор == R.id.action_settings) {возвращает истину; } Если (идентификатор == R.id.action_search) {Toast.makeText (getApplicationContext (), "Поиск выбрано действие!", Toast.LENGTH_SHORT) .show (); возвращает истину; } Вернуть super.onOptionsItemSelected (пункт); } @Override общественное недействительный onDrawerItemSelected (View вид, внутр положение) {DisplayView (положение); } Частная пустота DisplayView (целое положение) {фрагмент фрагмент = NULL; Строка название = GetString (R.string.app_name); переключатель (положение) {случай 0: фрагмент = новый HomeFragment (); название = GetString (R.string.nav_item_dashboard); перерыв; ...... } У меня есть конкретный формат для панели навигации и содержит TextView, который я хочу, чтобы обновить с помощью теста String. Это фрагмент кода и XML для него. FragmentDrawer Класс общественный FragmentDrawer () {} общественного недействительный setDrawerListener (FragmentDrawerListener слушатель) {this.drawerListener = слушатель; } общественности статический список GetData () {Список данных = новый ArrayList (); // подготовка элементов навигации ящик для (INT I = 0; я <titles.length, я ++) {NavDrawerItem navItem = новый NavDrawerItem (); navItem.setTitle (название [I]); navItem.setIcon (icons.getResourceId (я, -1)); data.add (navItem); } Возвращать данные; } @Override общественного недействительными OnCreate (Пачка savedInstanceState) {super.onCreate (savedInstanceState); // ящик этикетки названия = getActivity (). GetResources (). getStringArray (R.array.nav_drawer_labels); иконки = GetResources () obtainTypedArray (R.array.nav_drawer_icons). } @Override общественности Посмотреть onCreateView (LayoutInflater инфлятор, ViewGroup контейнер, Bundle savedInstanceState) {// Раздувание вид макета Вид макета = inflater.inflate (R.layout.fragment_navigation_drawer, контейнер, ложь); recyclerView = (RecyclerView) layout.findViewById (R.id.drawerList); TextView = идентификатор пользователя (TextView) layout.findViewById (R.id.nav_title_user); Адаптер = новый NavigationDrawerAdapter (getActivity (), GetData ()); recyclerView.setAdapter (адаптер); recyclerView.setLayoutManager (новый LinearLayoutManager (getActivity ())); recyclerView.addOnItemTouchListener (новый RecyclerTouchListener (getActivity (), recyclerView, новый ClickListener () {@Override общественных недействительный OnClick (View вид, внутр положение) {drawerListener.onDrawerItemSelected (вид, положение); mDrawerLayout.closeDrawer (containerView); } @Override общественное недействительный onLongClick (View вид, внутр положение) {}})); вернуться раскладку; } Общественной недействительная нАлАдкИ (интермедиат fragmentId, DrawerLayout drawerLayout, конечная панель инструментов) {containerView = getActivity () findViewById (fragmentId). mDrawerLayout = drawerLayout; mDrawerToggle = новый ActionBarDrawerToggle (getActivity (), drawerLayout, панель инструментов, R.string.drawer_open, R.string.drawer_close) {@Override общественного недействительными onDrawerOpened (View drawerView) {super.onDrawerOpened (drawerView); . GetActivity () invalidateOptionsMenu (); } @Override общественного недействительными onDrawerClosed (View drawerView) {super.onDrawerClosed (drawerView); . GetActivity () invalidateOptionsMenu (); } @Override общественного недействительный onDrawerSlide (View drawerView, поплавок slideOffset) {super.onDrawerSlide (drawerView, slideOffset); toolbar.setAlpha (1 - slideOffset / 2); }}; mDrawerLayout.setDrawerListener (mDrawerToggle); mDrawerLayout.post (новый Runnable () {@Override общественный недействительный запуск () {mDrawerToggle.syncState ();}}); } FramgentDrawer.xml ...... Мне удалось обновить список в ящике с иконами, этикеткой и заголовком. Я сделал это с помощью RecyclerViewAdapter. Проблема, которую я имею, что эти детали были из ресурсов (strings.xml). Как я могу обновить TextView на NavigationFragment, когда он был создан? Как я могу отправить значение фрагмента таким образом, что он будет использоваться во время OnCreateView фрагмента?
mokko211
1

голосов
1

ответ
752

Просмотры

Android фрагмент addToBackStack не работает с навигационным выдвижным ящиком

Я создал домашнюю деятельность, которая включает в себя панель навигации OnClick с фрагментом. Я включил fragmentTransaction.addToBackStack (нуль) .commit (); с кодом фрагмент сделки. Но это не вернуться на предыдущую страницу, вместо этого он закрывает приложение. В Мой MainActivity @SuppressWarnings ( "StatementWithEmptyBody") @Override общественного логический onNavigationItemSelected (MenuItem элемент) {FragmentManager fragmentManager = getSupportFragmentManager (); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction (); // вид ручки навигации пункт щелкает здесь. INT ID = item.getItemId (); RelativeLayout mainLayout = (RelativeLayout) findViewById (R.id.mainlayout); если (ID == R.id.nav_project) {ProjectFragment фрагмент = новый ProjectFragment (); mainLayout.removeAllViews (); fragmentTransaction.replace (R.id.mainlayout, фрагмент); fragmentTransaction.addToBackStack (нуль) .commit (); } DrawerLayout ящик = (DrawerLayout) findViewById (R.id.drawer_layout); drawer.closeDrawer (GravityCompat.START); возвращает истину; } @Override общественного недействительными onBackPressed () {DrawerLayout ящик = (DrawerLayout) findViewById (R.id.drawer_layout); если (drawer.isDrawerOpen (GravityCompat.START)) {drawer.closeDrawer (GravityCompat.START); } Еще {super.onBackPressed (); }} Мой По умолчанию Фрагмент общественного класса ProjectFragment расширяет фрагмент {@Nullable @Override общественное мнение onCreateView (LayoutInflater инфлятор, ViewGroup контейнер, Bundle savedInstanceState) {View v = inflater.inflate (R.layout.fragment_project, Контейнер, ложь); вернуться V; }} Может кто-нибудь помочь мне разобраться с этой проблемой.
Mr Robot
1

голосов
1

ответ
590

Просмотры

Исключение ActionBarDrawerToggle.syncState () в ландшафтном режиме

Моя HomePage активность содержит FrameLayout для фрагментов и панели инструментов, который имеет навигационный ящик на нем. Когда приложение запущено, HomeFragment получает помещается в макете кадра. Навигационная Выдвижные отлично работает. Когда я включаю телефон, я получаю следующее исключение: java.lang.RuntimeException: Не удается запустить активность ComponentInfo {com.markf.appname / com.markf.appname.HomePage}: java.lang.NullPointerException: Попытка вызвать виртуальный метод пустота android.support.v7.app.ActionBarDrawerToggle.syncState () 'на нулевой ссылке на объект ..... Вызванная: java.lang.NullPointerException: Попытка вызвать виртуальный метод пустоты android.support.v7.app. ActionBarDrawerToggle.syncState ()»на нулевой ссылке на объект Почему это исключение бросают в ландшафтном режиме? Вот мой файл манифеста который реализует стиль, который не имеет ActionBar: Вот файл стили ресурсов: @ стиль / MyActionButtonOverflow @ цвет / toolBarBackground @ цвет / toolBarText @ вытяжка / ic_list_black_24dp лжи истинный @ цвет / toolBarBackground @ цвет / toolBarText # 0D3B66 # 000000 # FFF176 Вот мой HomePage активность: общественный класс HomePage расширяет AppCompatActivity реализует HomeFragment.OnClickedListener {личное FragmentTransaction футов; частный DrawerLayout drawerLayout; частный ListView drawerList; частный ActionBarDrawerToggle drawerToggle; String [] drawerListItems; частный фрагмент Фрагмент; @Override защищены недействительный OnCreate (Пачка savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout. activity_home_page); если (findViewById (R.id.fragment_container)! = NULL) {если (savedInstanceState! = NULL) {возвращение; } HomeFragment firstFragment = новый HomeFragment (); firstFragment.setArguments (getIntent () getExtras ().); . GetFragmentManager () BeginTransaction () .add (R.id.fragment_container, firstFragment) .commit (); } Панель myToolbar = (панель) findViewById (R.id.toolBarHome); drawerLayout = (DrawerLayout) findViewById (R.id.homePageDrawer); drawerList = (ListView) findViewById (R.id.homePageList); drawerListItems = GetResources () getStringArray (R.array.activities). drawerList.setAdapter (новый ArrayAdapter (это, android.R.layout.simple_list_item_1, drawerListItems)); drawerList.setOnItemClickListener (новый AdapterView. OnItemClickListener () {@Override общественные недействительный onItemClick (AdapterView родитель, Вид вид, внутр позиция, длинный ID) {переключатель (положение) {случай 0: {фрагмент = новый HomeFragment (); перерыв; } Случай 1: {перерыва; } Случай 2: {перерыва; }} Р = getFragmentManager () BeginTransaction (). ft.replace (R.id.fragment_container, фрагмент); ft.addToBackStack (нуль); ft.setTransition (FragmentTransaction.TRANSIT_FRAGMENT_OPEN); ft.commit (); drawerLayout.closeDrawer (drawerList); }}); drawerToggle = новый ActionBarDrawerToggle (это, drawerLayout, myToolbar, R.string.drawer_open, R. string.drawer_close) {@Override общественного недействительными onDrawerOpened (View drawerView) {super.onDrawerOpened (drawerView); invalidateOptionsMenu (); syncState (); } @Override общественного недействительными onDrawerClosed (View drawerView) {super.onDrawerClosed (drawerView); invalidateOptionsMenu (); syncState (); }}; drawerLayout.setDrawerListener (drawerToggle); setSupportActionBar (myToolbar); myToolbar.setLogo (R.drawable.happy_dog_icon); getSupportActionBar () setDisplayHomeAsUpEnabled (истина). getSupportActionBar () setHomeButtonEnabled (истина). drawerToggle.syncState (); } @Override защищен onPostCreate пустот (Пачка savedInstanceState) {super.onPostCreate (savedInstanceState); drawerToggle.syncState (); } @Override общественного недействительными onConfigurationChanged (Конфигурация newConfig) {super.onConfigurationChanged (newConfig); drawerToggle.onConfigurationChanged (newConfig); } @Override общественного логический onCreateOptionsMenu (меню Menu) {getMenuInflater () надуваться (R.menu.menu, меню). вернуться super.onCreateOptionsMenu (меню); } @Override общественного логический onOptionsItemSelected (MenuItem элемент) {переключатель (item.getItemId ()) {случай android.R.id.home: {если (drawerLayout.isDrawerOpen (drawerList)) {drawerLayout.closeDrawer (drawerList); } Еще {drawerLayout.openDrawer (drawerList); } Возвращает истину; } Случай R.id.infoActionBar: {Toast.makeText (getApplicationContext (), "Эй", Toast.LENGTH_LONG) .show (); } По умолчанию: возвращение супер. onOptionsItemSelected (пункт); }} @Override общественного недействительными onBackPressed () {если (getFragmentManager () getBackStackEntryCount ()> 0.) {GetFragmentManager () popBackStack (). } Еще {super.onBackPressed (); }} @Override общественных недействительный buttonClicked (Просмотр v) {переключатель (v.getId ()) {случай R.id.logoutButton: {Намерение г = новое Намерение (HomePage.this, MainLoginActivity.class); startActivity (я); Конец(); }}} А вот фрагмент: общественный класс HomeFragment расширяет фрагмент реализует View.OnClickListener {личное кнопка logoutButton; частный пользователь ParseUser; OnClickedListener слушатель общественности; статический интерфейс OnClickedListener {общественного недействительными buttonClicked (View v); } @Override общественные недействительный onAttach (активность активность) {super.onAttach (активность); этот. Слушатель = (OnClickedListener) активность; } Общественного HomeFragment () {// Обязательный пустой открытый конструктор} @Override общественности Посмотреть onCreateView (LayoutInflater инфлятор, ViewGroup контейнер, Bundle savedInstanceState) {Посмотреть вид = inflater.inflate (R.layout.fragment_home, контейнер, ложь); logoutButton = (кнопка) view.findViewById (R.id.logoutButton); logoutButton.setOnClickListener (это); вернуться вид; } @Override общественного недействительными OnClick (View v) {переключатель (v.getId ()) {случай R.id.logoutButton: {user.logOut (); listener.buttonClicked (v); перерыв; }}}} Может кто-нибудь объяснить, почему я получаю это исключение? Спасибо. } Общественного HomeFragment () {// Обязательный пустой открытый конструктор} @Override общественности Посмотреть onCreateView (LayoutInflater инфлятор, ViewGroup контейнер, Bundle savedInstanceState) {Посмотреть вид = inflater.inflate (R.layout.fragment_home, контейнер, ложь); logoutButton = (кнопка) view.findViewById (R.id.logoutButton); logoutButton.setOnClickListener (это); вернуться вид; } @Override общественного недействительными OnClick (View v) {переключатель (v.getId ()) {случай R.id.logoutButton: {user.logOut (); listener.buttonClicked (v); перерыв; }}}} Может кто-нибудь объяснить, почему я получаю это исключение? Спасибо. } Общественного HomeFragment () {// Обязательный пустой открытый конструктор} @Override общественности Посмотреть onCreateView (LayoutInflater инфлятор, ViewGroup контейнер, Bundle savedInstanceState) {Посмотреть вид = inflater.inflate (R.layout.fragment_home, контейнер, ложь); logoutButton = (кнопка) view.findViewById (R.id.logoutButton); logoutButton.setOnClickListener (это); вернуться вид; } @Override общественного недействительными OnClick (View v) {переключатель (v.getId ()) {случай R.id.logoutButton: {user.logOut (); listener.buttonClicked (v); перерыв; }}}} Может кто-нибудь объяснить, почему я получаю это исключение? Спасибо. logoutButton = (кнопка) view.findViewById (R.id.logoutButton); logoutButton.setOnClickListener (это); вернуться вид; } @Override общественного недействительными OnClick (View v) {переключатель (v.getId ()) {случай R.id.logoutButton: {user.logOut (); listener.buttonClicked (v); перерыв; }}}} Может кто-нибудь объяснить, почему я получаю это исключение? Спасибо. logoutButton = (кнопка) view.findViewById (R.id.logoutButton); logoutButton.setOnClickListener (это); вернуться вид; } @Override общественного недействительными OnClick (View v) {переключатель (v.getId ()) {случай R.id.logoutButton: {user.logOut (); listener.buttonClicked (v); перерыв; }}}} Может кто-нибудь объяснить, почему я получаю это исключение? Спасибо.
Mark F
1

голосов
1

ответ
90

Просмотры

Кнопка Up не работает после выключения индикатора Ящика

Я использую этот код, чтобы изменить кнопку гамбургера на кнопку после определенного метода моей деятельности называется. mDrawerToggle.setDrawerIndicatorEnabled (ложь); getSupportActionBar () setDisplayHomeAsUpEnabled (истина). Это мой onOptionsItemSelected: иначе если (item.getItemId () == android.R.id.home) {ActionBar действие = getSupportActionBar (); action.setDisplayShowCustomEnabled (ложь); action.setDisplayShowTitleEnabled (истина); mDrawerToggle.setDrawerIndicatorEnabled (истина); action.setDisplayHomeAsUpEnabled (ложь); } Однако, когда я нажимаю кнопку вверх, ничего не произошло. Где я неправ?
user2872856
1

голосов
1

ответ
668

Просмотры

динамическое добавление и удаление элементов в меню NavigationView

Мое приложение требует NavigationDrawer быть добавлены / удалены с записями. В настоящее время он работает без каких-либо проблем. Я хотел бы заменить NavigationDrawer с NavigationView, так что я получаю лучше выглядеть минимальный код. Мой текущий nav.drawer содержит записи по умолчанию с последующим динамического добавления / удаления записей на основе требований пользователя. Записи хранятся в БД и заселена в навигационном ящик всякий раз, когда приложение открыто. Я имею в виду http://www.technotalkative.com/part-4-playing-with-navigationview/ я познакомился с 23.0.0 и 23.1.1 .. и т.д., есть некоторые проблемы с добавлением элементов динамически. Я также хочу динамическое удаление записей из NavigationView добавления, удаления элементов в окне навигации можно? любой образец я могу обратиться, чтобы узнать navigationview для этих операций лучше?
Sudarshan sridhar
1

голосов
2

ответ
426

Просмотры

Я пытаюсь понять, как добавить тусклый фон на щелчке меню настоящего ФАБА в навигационном ящике

У меня есть FAB меню в панели навигации. Я использую кнопку android.support.design.widget.FloatingActionButton и OnClick этого мы покажем четыре ФАБ в форме дуги. У меня есть контейнер в ящике навигации, который держать замены фрагмента в кассету (нормальное поведение ящика). Как я могу отключить фон когда пользователь нажимает на кнопку меню FAB. Я немного застрял на том, как выполнить это, хотя.
1

голосов
2

ответ
770

Просмотры

Адаптер меню на заказ для navDrawer?

Я разрабатываю приложение, используя официальный андроид NavigationDrawer, то navDrawer имеет свое собственное меню XML под названием activity_main_drawer.xml на рисунке: Это он в приложении: Теперь я хочу, чтобы изменить названия и иконки для каждой строки динамически (JSON ), я знаю, как сделать пользовательский ListView адаптер, но я не мог знать, как сделать адаптер пользовательского меню для этого navDrawer. Это не ListView, это меню и имеют группы и элементы. Любая помощь очень ценится.
Fadi Obaji
1

голосов
1

ответ
164

Просмотры

Навигация Заголовок Показать / Initialized Неправильный

Я пытаюсь правильно отображать информацию о пользователе в заголовке NavigationDrawer, но по какой-то причине некоторые свойств становятся отображается дважды в заголовке ( «некоторая электронная почта или другая информация» и изображение сверху). Не могли бы вы сказать мне, что я делаю неправильно и нужно исправить. Спасибо! Вот скриншот заголовка NavigationDrawer: Вот XML для заголовка: А вот часть кода Java, который инициализирует NaviationDrawer, загружает изображение, и т.д ...: Основной метод: ящик = (DrawerLayout) findViewById ( R.id.drawer_layout); // получает ящик кнопку ActionBarDrawerToggle тумблер = новый ActionBarDrawerToggle (// intializes переключения для navigationdrawer этого, ящик, панель инструментов, R.string.navigation_drawer_open, R.string.navigation_drawer_close); drawer.setDrawerListener (переключение); // Наборы для переключения navigationdrawer navigationView = (NavigationView) findViewById (R.id.nav_view); // инициализирует список элементов в navigationdrawer navigationView.setNavigationItemSelectedListener (это); // устанавливает слушатель для элементов в navigationdrawer navigationView.getMenu () GetItem (0) .setChecked (истина). // устанавливает "Карта" в зарегистрированном loadNavigationDrawerInfo (navigationView.inflateHeaderView (R.layout.nav_header_main)); mLocationRequest = LocationRequest.create () .setPriority (LocationRequest.PRIORITY_HIGH_ACCURACY) .setInterval (10 * 1000) // 10 секунд, в миллисекундах .setFastestInterval (1 * 1000); // 1 вторые, в миллисекундах drawer.setOnFocusChangeListener (новый View.OnFocusChangeListener () {@Override общественного недействительный onFocusChange (View v, булево HasFocus) {Log.d ( "TAG", "HasFocus" + HasFocus); }}); общественного недействительный loadNavigationDrawerInfo (View headerlayout) {Карта конфиг = новый HashMap (); config.put ( "cloud_name", "некоторое имя облака"); config.put ( "api_key", "некоторые апи ключ"); config.put ( "api_secret", "некоторая апи секрет апи секрет"); Cloudinary cloudinary = новый Cloudinary (конфигурации); новый DownloadImageTask ((CircleImageView) headerlayout.findViewById (R.id.userImage)) выполнить ( "некоторые действительный URL с JPG"). } Частный класс DownloadImageTask расширяет AsyncTask {CircleImageView bmImage; общественного DownloadImageTask (CircleImageView bmImage) {this.bmImage = bmImage; } Защищен Растровые doInBackground (String ... URLs) {Строка urldisplay = URLs [0]; Растровые mIcon11 = NULL; попробуйте {InputStream в = новый java.net.URL (urldisplay) .openStream (); mIcon11 = BitmapFactory.decodeStream (в); } Задвижка (Исключение е) {Log.e ( "Ошибка", e.getMessage ()); e.printStackTrace (); } Вернуть mIcon11; } Защищен onPostExecute пустот (результат Bitmap) {bmImage.setImageBitmap (результат); Log.d ( "TAG", "Готово загрузки изображения"); }} mIcon11 = BitmapFactory.decodeStream (в); } Задвижка (Исключение е) {Log.e ( "Ошибка", e.getMessage ()); e.printStackTrace (); } Вернуть mIcon11; } Защищен onPostExecute пустот (результат Bitmap) {bmImage.setImageBitmap (результат); Log.d ( "TAG", "Готово загрузки изображения"); }} mIcon11 = BitmapFactory.decodeStream (в); } Задвижка (Исключение е) {Log.e ( "Ошибка", e.getMessage ()); e.printStackTrace (); } Вернуть mIcon11; } Защищен onPostExecute пустот (результат Bitmap) {bmImage.setImageBitmap (результат); Log.d ( "TAG", "Готово загрузки изображения"); }}
f3d0r
1

голосов
1

ответ
206

Просмотры

Как перемещаться между 2 видами на меню навигации ящика выберите в React Native Android?

Я не могу понять, поток навигатор для среагировать нативным-андроида. Я имею в виду по следующей ссылке: https://rnplay.org/apps/HPy6UA Но это связано с IOS. Могу ли я в состоянии использовать тот же код для реакции родной Android также? Я имею в виду также следующее: https://github.com/caroaguilar/NavigationDrawerExample
BK19
1

голосов
2

ответ
338

Просмотры

onBackPressed add double tap exit with navigation drawer?

Я хочу, чтобы сделать кодирование, как показано ниже .. булево doubleBackToExitPressedOnce = ложь; @Override общественного недействительными onBackPressed () {если (getFragmentManager () getBackStackEntryCount ()> 0.) {GetFragmentManager () popBackStack (). .} Еще {фрагмент фрагмент = getFragmentManager () findFragmentById (R.id.container); если (фрагмент InstanceOf MainHomeFragment) {если (doubleBackToExitPressedOnce) {super.onBackPressed (); вернуть; } This.doubleBackToExitPressedOnce = TRUE; Toast.makeText (это, "Пожалуйста, нажмите НАЗАД, чтобы выйти", Toast.LENGTH_SHORT) .show (); . Новый Handler () postDelayed (новый Runnable () {@Override общественный недействительный запуск () {doubleBackToExitPressedOnce = ложь; }}, 2000); } Еще {super.onBackPressed (); }}} Моя проблема, когда ящик открыт, onbackpressed не может закрыть ящик .. Я хотел бы добавить следующий код ... где я должен поставить код? DrawerLayout mDrawerLayout = (DrawerLayout) findViewById (R.id.drawerLayout); если (mDrawerLayout.isDrawerOpen (GravityCompat.START)) {mDrawerLayout.closeDrawer (GravityCompat.START); } СНВ)) {mDrawerLayout.closeDrawer (GravityCompat.START); } СНВ)) {mDrawerLayout.closeDrawer (GravityCompat.START); }
Driyanto Saputro
1

голосов
1

ответ
495

Просмотры

Намерение вопрос от деятельности к навигации ящику

Manifest.xml registration.java защищен недействительным OnCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.registration); // инициализация firebase объекта аутентификации firebaseAuth = FirebaseAuth.getInstance (); // инициализация просмотров editTextEmail = (EditText) findViewById (R.id.editTextEmail); editTextPassword = (EditText) findViewById (R.id.editTextPassword); buttonSignup = (кнопка) findViewById (R.id.buttonSignup); progressDialog = новый ProgressDialog (это); // прикрепление слушателя к кнопке buttonSignup.setOnClickListener (это); } Частный недействительным registerUser () {// получение электронной почты и пароль от редактирования текстов строк электронной почты = editTextEmail.getText () ToString () отделка ()..; .. Строка пароля = editTextPassword.getText () ToString () отделка (); // проверка, если адрес электронной почты и пароли являются пустыми, если (TextUtils.isEmpty (электронная почта)) {Toast.makeText (это, "Пожалуйста, введите адрес электронной почты", Toast.LENGTH_LONG) .show (); вернуть; } Если (TextUtils.isEmpty (пароль)) {Toast.makeText (это, "Пожалуйста, введите пароль", Toast.LENGTH_LONG) .show (); вернуть; } // если адрес электронной почты и пароль не пустой // отображение прогресса диалоговое progressDialog. setMessage ( "Регистрация Пожалуйста, подождите ..."); progressDialog.show (); // создание нового пользователя firebaseAuth.createUserWithEmailAndPassword (адрес электронной почты, пароль) .addOnCompleteListener (это, новый OnCompleteListener () {@Override общественные недействительные OnComplete (@NonNull Задача задачи) {// проверка, если успех, если (task.isSuccessful ()) { // выводим какое-то сообщение здесь Toast.makeText (registration.this, "Успешно зарегистрирован", Toast.LENGTH_LONG) .Show (); Намерение я = новый Intent (registration.this, MainActivity.class); startActivity (I); } Еще {// выводим какое-то сообщение здесь Toast.makeText (registration.this, "Ошибка регистрации", Toast.LENGTH_LONG) .show (); } ProgressDialog.dismiss (); }}); } @Override общественных недействительный OnClick (View вид) {// вызывается метод регистра на клик registerUser (); }} В моем MainActivity.java Существует шаблон панели навигации обеспечивается андроидом студии Выпуска: Когда я намерен от регистрации в другую деятельность, как abc.class. Его работает нормально, но когда я намерен от регистрации до MainActivity.class, который содержит navigration ящик. Моё приложение разбился после щелчка по регистрации. Процесс регистрации сделано, то мое приложение разбилось. Вместо того, чтобы аварии, он должен показать navigration ящик
Muhammad Saad Bhatti
1

голосов
3

ответ
432

Просмотры

Создать приложение выход из системы события

Я использую панель навигации, чтобы отобразить все элементы, такие как установка, Профиль, Контакты, О нас, Logout при нажатии на любой из этих элементов, то оно должно отображаться в виде фрагмента или другой деятельности. Я попытался создать Logout фрагмент, но он не работает, используя активность & Intent. Как я могу получить, когда выход из системы щелкает, он должен выйти из приложения полностью, как это происходит с любым банковским приложением.
Priyanka
1

голосов
1

ответ
464

Просмотры

Перемещение CardView ниже NavigationView

Я ищу, чтобы переместить cardview вниз так, он не заблокирован навигационной панели. Вот скриншот, чтобы показать, что проблема, которую я в настоящее время: Nav-Bar Сопроводительное Cardview. Мы ценим любые предложения! Вот мой activity_recycler_view код XML: Вот мой app_bar_home код XML: Вот мой nav_header_home код XML: Вот мой activity_home код XML: Вот мой content_home XML-код:
Janelle Boyd
1

голосов
2

ответ
919

Просмотры

android navigation drawer recreating fragments everytime

I am loading a simple navigation drawer with 3 fragments inside. When i go to 1st fragment and click a button in that fragment then the buttons background color is changed then i am navigating to second fragment and again i am coming back to the 1st fragment i want my fragment (With color changed button) in the backstack. But it is recreated everytime. I have tried multiple ways no luck. Since i am new to fragments i am stuck with this. public class SampleActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener, Fragment1.OnFragmentInteractionListener, Fragment2.OnFragmentInteractionListener, Fragment3.OnFragmentInteractionListener { static Fragment fragment = null; private static final String FRAGMENT1_TAG = "FRAGMENT1_TAG"; private static final String FRAGMENT2_TAG = "FRAGMENT2_TAG"; private static final String FRAGMENT3_TAG = "FRAGMENT3_TAG"; @Override public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) { super.onSaveInstanceState(outState, outPersistentState); } @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_sample); DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); drawer.setDrawerListener(toggle); toggle.syncState(); NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); navigationView.setNavigationItemSelectedListener(this); } @Override public void onBackPressed() { DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); if (drawer.isDrawerOpen(GravityCompat.START)) { drawer.closeDrawer(GravityCompat.START); } else { super.onBackPressed(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. // getMenuInflater().inflate(R.menu.dashboard, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } @SuppressWarnings("StatementWithEmptyBody") @Override public boolean onNavigationItemSelected(MenuItem item) { int id = item.getItemId(); navigateToFragment(id); return true; } @Override public void onFragmentInteraction(Uri uri) { } public void navigateToFragment(int itemId) { // Handle navigation view item clicks here. String FRAGMENT_TAG=""; switch (itemId) { case R.id.nav_fragment1: FRAGMENT_TAG = FRAGMENT1_TAG; fragment = Fragment1.newInstance(); break; case R.id.nav_fragment2: FRAGMENT_TAG = FRAGMENT2_TAG; fragment = Fragment2.newInstance(); break; case R.id.nav_fragment3: FRAGMENT_TAG = FRAGMENT3_TAG; fragment = Fragment3.newInstance(); break; default: FRAGMENT_TAG = FRAGMENT1_TAG; fragment = Fragment1.newInstance(); break; } FragmentManager supportFragmentManager = getSupportFragmentManager(); FragmentTransaction fragmentTransaction = supportFragmentManager.beginTransaction(); Fragment inputFragment = supportFragmentManager.findFragmentByTag(FRAGMENT_TAG); if (inputFragment == null) { fragmentTransaction.replace(R.id.content_frame, fragment, FRAGMENT_TAG).addToBackStack(null).commit(); } else { fragmentTransaction.replace(R.id.content_frame, inputFragment, FRAGMENT_TAG).addToBackStack(null).commit(); } DrawerLayout drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); drawerLayout.closeDrawer(GravityCompat.START); } }
Firnaz
1

голосов
1

ответ
442

Просмотры

Почему увидеть две панели инструментов, когда я создал приложение, которое имеет навигационный ящик?

Я создал приложение, которое имеет навигационный ящик, он отлично работает, но единственная проблема в том, что я вижу две панели инструментов. Один, в котором есть кнопка Actionbartoggle и другие, которые по умолчанию. Теперь учебник я видел использовал панель инструментов в основном содержание макета ящика и, очевидно, содержание навигации приходит из меню. Теперь проблема, я думаю, что мы должны передать ссылку на панели инструментов в конструкторе Actionbardrawertoggle, и после того, как я прошел его должным образом, она работает нормально, но я вижу две панели инструментов / actionbars. В основном мой вопрос, как я могу получить кнопку переключения на основной панели действий и не получить создана вторая панели инструментов? Я попытался с помощью Это помогает мне, чтобы скрыть верхнюю ActionBar, но я не думаю, что это хороший способ сделать это. Я отправляю мой скриншот вывода и код: Mainactivity: импорт android.content.DialogInterface; импорт android.content.Intent; импорт android.os.Bundle; импорт android.support.v7.app.AlertDialog; импорт android.support.v7.app.AppCompatActivity; импорт android.view.Menu; импорт android.view.MenuInflater; импорт android.view.MenuItem; импорт android.view.View; импорт android.widget.Button; импорт android.support.annotation.NonNull; импорт android.support.design.widget.NavigationView; импорт android.support.v4.view.GravityCompat; импорт android.support.v4.widget.DrawerLayout; импорт android.support.v7.app.ActionBarDrawerToggle; импорт android.support.v7.app.AppCompatActivity; импорт android.os.Bundle; импорт android.support.v7.widget.Toolbar; импорт android.view.MenuItem; импорт android.view.View; импорт android.view.Window; импорт android.widget.Toast; импорт java.util.HashMap; импорт android.content.DialogInterface; импорт android.content.Intent; импорт android.support.v7.app.AlertDialog; импорт android.support.v7.app.AppCompatActivity; импорт android.os.Bundle; импорт android.view.View; импорт android.widget.Button; импорт java.util.HashMap; общественный класс MainActivity расширяет AppCompatActivity реализует NavigationView.OnNavigationItemSelectedListener {SessionManager сессии; частная панель mToolbar; частный DrawerLayout mDrawerLayout; ActionBarDrawerToggle drawerToggle; @Override защищены недействительный OnCreate (Пачка savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.activity_user_area); setupToolbarMenu (); setupNavigationDrawerMenu (); } @Override общественного логический onOptionsItemSelected (MenuItem элемент) {// Переключатель выбора пункта Ручка (item.getItemId ()) {случай R.id.lg: session.logoutUser (); возвращает истину; по умолчанию: возвращение super.onOptionsItemSelected (пункт); }} Частная пустота setupToolbarMenu () {mToolbar = (панель) findViewById (R.id.toolbar); mToolbar.setTitle ( "Домашняя страница"); } Частная пустота setupNavigationDrawerMenu () {NavigationView navigationView = (NavigationView) findViewById (R.id.navigationView); mDrawerLayout = (DrawerLayout) findViewById (R.id.drawerLayout); navigationView.setNavigationItemSelectedListener (это); navigationView.setItemIconTintList (нуль); drawerToggle = новый ActionBarDrawerToggle (это, mDrawerLayout, mToolbar, R.string.drawer_open, R.string.drawer_close); mDrawerLayout.addDrawerListener (drawerToggle); drawerToggle.syncState (); } @Override // Вызывается, когда любой пункт навигации щелкают общественного логический onNavigationItemSelected (@NonNull MenuItem MENUITEM) {closeDrawer (); переключатель (menuItem.getItemId ()) {случай R.id.home: // Поместите свой Item конкретный код здесь перерыва; Случай R.id.invoice: Намерение Намерение = новое Намерение (это, details.class); startActivity (намерение); // Поместите свой предмет специфический код здесь перерыва; } Возвращает истину; } // Закрывает ящик собственного недействительный closeDrawer () {mDrawerLayout.closeDrawer (GravityCompat.START); } // Открывает ящик собственного недействительный showDrawer () {mDrawerLayout.openDrawer (GravityCompat.START); } @Override общественного недействительными onBackPressed () {если (mDrawerLayout.isDrawerOpen (GravityCompat.START)) closeDrawer (); еще {новый AlertDialog.Builder (это) .setIcon (android.R.drawable.ic_dialog_alert) .setTitle ( "Выход") .setMessage ( "Вы уверены?") .setPositiveButton ( "да", новый DialogInterface.OnClickListener () {@Override общественного недействительными OnClick (диалог DialogInterface, внутр который) {намерение намерение = новый Intent (Intent.ACTION_MAIN); intent.addCategory (Intent.CATEGORY_HOME); intent.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK); startActivity (намерение); Конец(); }}) SetNegativeButton ( "нет", нуль) .show ();}}} мой styles.xml файл:. @ Цвет / colorPrimary @ цвет / colorPrimaryDark @ цвет / colorAccent Я знаю, что это не может быть полезен, но вот мой файл манифеста тоже: А вот выход я получаю: startActivity (намерение); Конец(); }}) SetNegativeButton ( "нет", нуль) .show ();}}} мой styles.xml файл:. @ Цвет / colorPrimary @ цвет / colorPrimaryDark @ цвет / colorAccent Я знаю, что это не может быть полезен, но вот мой файл манифеста тоже: А вот выход я получаю: startActivity (намерение); Конец(); }}) SetNegativeButton ( "нет", нуль) .show ();}}} мой styles.xml файл:. @ Цвет / colorPrimary @ цвет / colorPrimaryDark @ цвет / colorAccent Я знаю, что это не может быть полезен, но вот мой файл манифеста тоже: А вот выход я получаю:
Robin10
1

голосов
1

ответ
61

Просмотры

Панель инструментов резки сверху. Как показать полную панель инструментов?

Я добавляю материал ящик Материал ящик и сделал метод addNavigationDrawer добавить панель навигации и вызов метода после того, как я получить подробную информацию о пользователе из Firebase Firestore базы данных (Вы можете найти его в Auth Слушателе по методе OnCreate) Но на первый раз открытие этого активность, бар действия резка, как вы можете видеть на картинке Но когда я просто минимизировать его и открыть его снова, его работу абсолютно нормально. Пожалуйста, предложите что делать? Вот полный код активности общественного класса Main2Activity расширяет AppCompatActivity {ProfileInformationDialog profileInformationDialog; FirebaseAuth firebaseAuth; FirebaseAuth.AuthStateListener authStateListener; FirebaseFirestore дБ; DocumentReference DocumentReference; Кнопка Кнопка; GoogleApiClient GoogleApiClient; /*@BindView(R.id.toolbar) панель инструментов; * / ProgressDialog progressDialog; Строка user_name, shop_name; Панель инструментов; Результат ящика; AccountHeader headerResult; @Override общественного недействительный OnStart () {GoogleSignInOptions ГСО = новый GoogleSignInOptions.Builder (GoogleSignInOptions.DEFAULT_SIGN_IN) .requestEmail () .build (); GoogleApiClient = новый GoogleApiClient.Builder (это) .addApi (Auth.GOOGLE_SIGN_IN_API, GSO) .build (); googleApiClient.connect (); super.onStart (); firebaseAuth.addAuthStateListener (authStateListener); } @Override защищен недействительным OnCreate (Пачка savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.activity_main2); Панель = (Панель инструментов) findViewById (R.id.toolbar); toolbar.setTitle ( "Hello"); setSupportActionBar (панель инструментов); //DrawerUtil.getDrawer(Main2Activity.this,toolbar); // addNavigationDrawer (); progressDialog = новый ProgressDialog (это); дБ = FirebaseFirestore.getInstance (); profileInformationDialog = новый ProfileInformationDialog (это); FacebookSdk.sdkInitialize (getApplicationContext ()); AppEventsLogger.activateApp (это); ButterKnife.bind (это); Кнопка = (кнопка) findViewById (R.id.log_out); firebaseAuth = FirebaseAuth.getInstance (); authStateListener = новый FirebaseAuth.AuthStateListener () {@Override общественного недействительными onAuthStateChanged (@NonNull FirebaseAuth firebaseAuth) {конечная FirebaseUser firebaseUser = firebaseAuth.getCurrentUser (); если (firebaseUser! = NULL) {progressDialog.setMessage ( "Загрузка ..."); progressDialog.show (); progressDialog.setCancelable (ложь); . // Пользователь подписан в DocumentReference = db.collection ( "Пользователи") документ (firebaseUser.getUid ()); . DocumentReference.get () addOnSuccessListener (новый OnSuccessListener () {@Override общественного недействительными OnSuccess (DocumentSnapshot documentSnapshot) {если (documentSnapshot = NULL && documentSnapshot.exists ()) {progressDialog.hide ();! User1 Пользователь = documentSnapshot.toObject ( User.class); user_name = user1.getName (); shop_name = user1.getShop_name (); addNavigationDrawer (); //DrawerUtil.getDrawer(Main2Activity.this,toolbar); headerResult.updateProfile (новый ProfileDrawerItem () withIcon (R.drawable.logout_icon256) .withName (user_name).); Toast.makeText (Main2Activity.this, "Документ Exists", Toast.LENGTH_SHORT) .show (); } Еще {progressDialog.hide (); Toast.makeText (Main2Activity.this, "Нет такого документа", Toast.LENGTH_SHORT) .show (); profileInformationDialog.show (); profileInformationDialog.setCancelable (ложь); }}}). addOnFailureListener (новый OnFailureListener () {@Override общественный недействительный OnFailure (@NonNull Исключения е) {progressDialog.hide (); Toast.makeText (Main2Activity.this, "Исключение" + е, Toast.LENGTH_SHORT) .show ();}} ); Log.d ( "TAG", "onAuthStateChanged: signed_in:" + firebaseUser.getUid ()); } Еще {// Пользователь выписался Log.d ( "TAG", "onAuthStateChanged: signed_out"); }}}; button.setOnClickListener (новый View.OnClickListener () {@Override общественного недействительный OnClick (View Вид) {Auth.GoogleSignInApi.signOut (GoogleApiClient). setResultCallback (новый ResultCallback () {@Override общественного недействительными onResult (@NonNull статус Статус) {//Toast.makeText(getApplicationContext(),"Google Записан Out», Toast.LENGTH_SHORT) .show ();}}); firebaseAuth.signOut (); . LoginManager.getInstance () Logout (); startActivity (новое Намерение (Main2Activity.this, SignInActivity.class)); Конец(); }}); } Частная пустота addNavigationDrawer () {headerResult = новый AccountHeaderBuilder () .withActivity (это) .withHeaderBackground (R.drawable.curve_shape) .withSelectionListEnabledForSingleProfile (истина). addProfiles (новый ProfileDrawerItem (). withName (user_name) .withIcon (R.drawable.logout_icon256)) .withOnAccountHeaderListener (новый AccountHeader.OnAccountHeaderListener () {@Override общественного логический onProfileChanged (View вид, профиль IProfile, булево currentProfile) {Toast.makeText (Main2Activity.this, profile.getName () + "", Toast.LENGTH_SHORT) .show (); вернуться ложным;}}) .build (); PrimaryDrawerItem makeBillItem = новый PrimaryDrawerItem () withIdentifier (1) .withName ( "Сделать новый проект закона"). SecondaryDrawerItem logoutItem = новый SecondaryDrawerItem () withIdentifier (2) .withName ( "Выход") withIcon (R.drawable.logout_icon256)..; LENGTH_SHORT) .show (); возвращает истину; }}) .Build (); } @Override общественного недействительный OnStop () {super.onStop (); если (firebaseAuth! = NULL) {firebaseAuth.removeAuthStateListener (authStateListener); }}}
Lakshya Punhani
1

голосов
2

ответ
450

Просмотры

Откройте меню навигации ящика в другой деятельности

Я создал меню панели навигации, и теперь я хочу, чтобы она появилась в моей основной деятельности. У меня есть следующий код в моей основной деятельности: общественный класс MainActivity расширяет sideMenu {@Override защищен недействительным OnCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); FrameLayout contentFrameLayout = (FrameLayout) findViewById (R.id.content_frame); . GetLayoutInflater () раздуть (R.layout.activity_main, contentFrameLayout); }} Когда я запустить приложение он выходит из строя при входе в основную деятельность, и он говорит это: ** Вызванные: java.lang.IllegalStateException: Эта активность уже имеет панель действий, поставляемый оконного декора. Не запрашивать Window.FEATURE_SUPPORT_ACTION_BAR и установить windowActionBar к ложным в вашей теме, чтобы использовать панель инструментов вместо этого. ** Это указывает ошибка в двух местах: активность Меню - Панель инструментов Панель инструментов = (Панель инструментов) findViewById (R.id.toolbar); setSupportActionBar (панель инструментов); Основная деятельность - super.onCreate (savedInstanceState); Если кто-то может пролить некоторый свет здесь я был бы признателен! EDIT: код меню Активность: Android манифеста общественного класса sideMenu расширяет AppCompatActivity реализует NavigationView.OnNavigationItemSelectedListener {@Override защищен недействительным OnCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.activity_side_menu); Панель инструментов = (Панель инструментов) findViewById (R.id.toolbar); setSupportActionBar (панель инструментов); setSupportActionBar (панель инструментов); DrawerLayout ящик = (DrawerLayout) findViewById (R.id.drawer_layout); ActionBarDrawerToggle тумблер = новый ActionBarDrawerToggle (это, ящик, панель инструментов, R.string.navigation_drawer_open, R.string.navigation_drawer_close); drawer.addDrawerListener (переключение); toggle.syncState (); NavigationView navigationView = (NavigationView) findViewById (R.id.navigation_view); navigationView.setNavigationItemSelectedListener (это); } @Override общественного недействительными onBackPressed () {DrawerLayout ящик = (DrawerLayout) findViewById (R.id.drawer_layout); если (drawer.isDrawerOpen (GravityCompat.START)) {drawer.closeDrawer (GravityCompat.START); } Еще {super.onBackPressed (); }} @Override общественного логический onCreateOptionsMenu (меню Menu) {// Накачайте меню; это добавляет элементы в панели действий, если он присутствует. . GetMenuInflater () надуваться (R.menu.side_menu, меню); возвращает истину; } @Override общественного логический onOptionsItemSelected (MenuItem элемент) {// Handle панели действий пункт щелкает здесь. Панель действий будет // автоматически обрабатывать клики по кнопке Home / Up до тех пор, // как вы указали родительское активность в AndroidManifest.xml. INT ID = item.getItemId (); // noinspection SimplifiableIfStatement если (идентификатор == R.id.action_settings) {возвращает истину; } Вернуть super.onOptionsItemSelected (пункт); } @SuppressWarnings ( "StatementWithEmptyBody" ) @Override общественного логический onNavigationItemSelected (MenuItem элемент) {// Handle вид навигации пункт щелкает здесь. INT ID = item.getItemId (); если (идентификатор == R.id.nav_camera) {// Обработать действие камеры} иначе, если (идентификатор == R.id.nav_gallery) {} еще если (идентификатор == R.id.nav_slideshow) {} еще если ( идентификатор == R.id.nav_manage) {} иначе, если (ID == R.id.nav_share) {} иначе, если (ID == R.id.nav_send) {} ​​DrawerLayout ящик = (DrawerLayout) findViewById (R.id .drawer_layout); drawer.closeDrawer (GravityCompat.START); возвращает истину; }} Меню XML: app_bar_side_menu XML: Content_side_menu XML: nav_header_side_menu: INT ID = item.getItemId (); если (идентификатор == R.id.nav_camera) {// Обработать действие камеры} иначе, если (идентификатор == R.id.nav_gallery) {} еще если (идентификатор == R.id.nav_slideshow) {} еще если ( идентификатор == R.id.nav_manage) {} иначе, если (ID == R.id.nav_share) {} иначе, если (ID == R.id.nav_send) {} ​​DrawerLayout ящик = (DrawerLayout) findViewById (R.id .drawer_layout); drawer.closeDrawer (GravityCompat.START); возвращает истину; }} Меню XML: app_bar_side_menu XML: Content_side_menu XML: nav_header_side_menu: INT ID = item.getItemId (); если (идентификатор == R.id.nav_camera) {// Обработать действие камеры} иначе, если (идентификатор == R.id.nav_gallery) {} еще если (идентификатор == R.id.nav_slideshow) {} еще если ( идентификатор == R.id.nav_manage) {} иначе, если (ID == R.id.nav_share) {} иначе, если (ID == R.id.nav_send) {} ​​DrawerLayout ящик = (DrawerLayout) findViewById (R.id .drawer_layout); drawer.closeDrawer (GravityCompat.START); возвращает истину; }} Меню XML: app_bar_side_menu XML: Content_side_menu XML: nav_header_side_menu: nav_manage) {} иначе, если (ID == R.id.nav_share) {} иначе, если (ID == R.id.nav_send) {} ​​DrawerLayout ящик = (DrawerLayout) findViewById (R.id.drawer_layout); drawer.closeDrawer (GravityCompat.START); возвращает истину; }} Меню XML: app_bar_side_menu XML: Content_side_menu XML: nav_header_side_menu: nav_manage) {} иначе, если (ID == R.id.nav_share) {} иначе, если (ID == R.id.nav_send) {} ​​DrawerLayout ящик = (DrawerLayout) findViewById (R.id.drawer_layout); drawer.closeDrawer (GravityCompat.START); возвращает истину; }} Меню XML: app_bar_side_menu XML: Content_side_menu XML: nav_header_side_menu:
Diogo Carvalho
1

голосов
1

ответ
155

Просмотры

Настройка содержания по умолчанию Открыл панель навигации

I have two drawers on left and on right. Now right drawer is in the lock-closed state, but left drawer can be open and close. On opening drawer, I am pushing the middle content using drawer offset. Now I also want right drawer (which is opened by default) should move/adjust the content also but I am unable to do it. Because when the left drawer is opened it pushes the content under the right drawer. So what I want the right drawer on default opening should adjust the content and when I open left drawer content should adjust and should not move under the right drawer. Here is my code: DrawerAcivity: mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); mDrawerLayout.setScrimColor(Color.parseColor("#00000000")); main_screen = (RelativeLayout) findViewById(R.id.main_screen); leftMenu= (RelativeLayout) findViewById(R.id.leftMenu); rightMenu= (RelativeLayout) findViewById(R.id.rightMenu); Display display = getWindowManager().getDefaultDisplay(); size = new Point(); display.getSize(size); mDrawerLayout.addDrawerListener(new CustomDrawerLayout.DrawerListener() { @Override public void onDrawerSlide(View drawerView, float slideOffset) { float moveFactor = 0; moveFactor = (drawerView.getWidth() * slideOffset); main_screen.setTranslationX(moveFactor); } @Override public void onDrawerOpened(View drawerView) { invalidateOptionsMenu(); } @Override public void onDrawerClosed(View drawerView) { invalidateOptionsMenu(); } @Override public void onDrawerStateChanged(int newState) { } }); mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, rightMenu); mDrawerLayout.openDrawer(GravityCompat.END); mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, leftMenu); ViewGroup.LayoutParams params = leftMenu.getLayoutParams(); params.width = (((size.x / 2) / 4)); rl_slider_menu.setLayoutParams(params); ViewGroup.LayoutParams paramsRight = rightMenu.getLayoutParams(); paramsRight.width = ((size.x / 3)); rightMenu.setLayoutParams(paramsRight); DrawerLayout.LayoutParams paramsContent = (DrawerLayout.LayoutParams) main_screen.getLayoutParams(); paramsContent.setMargins(0, 0, (((size.x / 2) / 4)), 0); //substitute parameters for left, top, right, bottom main_screen.setLayoutParams(paramsContent); main_screen.invalidate();
User42590
1

голосов
1

ответ
228

Просмотры

Как создать панель инструментов в верхней части панели навигации (Android / Котлин)

Я хочу иметь панель инструментов в верхней части панели навигации, как это Вот мой activity_main.xml и мой app_bar_main.xml Когда я пытаюсь создать панель инструментов в activity_main.xml ничего не происходит ...
Alex Kolydas
1

голосов
1

ответ
0

Просмотры

ScrollView внутри меню NavigationDrawer

Я хочу, чтобы реализовать Scrollview в шаблоне NavigationDrawer в Android Studio. Что мне нужно сделать? Как можно сделать полное меню навигации прокручивать? У меня есть много вариантов здесь, но я не могу прокручивать и просматривать их все Demo Image
shaikat saha
1

голосов
2

ответ
92

Просмотры

Не удается открыть NavigationDrawer из меню панели инструментов Элементы андроида

Привет я пытаюсь использовать этот учебник, чтобы сделать NavigationDrawer в андроид, но я wan't, чтобы изменить способ, что выдвижной ящик открыт. обучающее это: http://www.androidhive.info/2015/04/android-getting-started-with-material-design/ в этом уроке кассеты с открытой домашней кнопкой по умолчанию на панели инструментов, я хочу, чтобы открыть его с помощью меню вещь. это мой основной код: общественный класс FIRST_PAGE расширяет AppCompatActivity реализует FragmentDrawer.FragmentDrawerListener {Button go_layout; частная панель инструментов; частный FragmentDrawer drawerFragment; @Override защищены недействительный OnCreate (Пачка savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.activity_first_page); Панель = (Панель инструментов) findViewById (R.id.toolbar); setSupportActionBar (панель инструментов); getSupportActionBar (). setDisplayShowTitleEnabled (ложь); getSupportActionBar () setHomeButtonEnabled (истина). getSupportActionBar () setDisplayUseLogoEnabled (истина). . GetSupportActionBar () setLogo (R.drawable.page_logo_2); drawerFragment = (FragmentDrawer) getSupportFragmentManager () findFragmentById (R.id.fragment_navigation_drawer). drawerFragment.setUp (R.id.fragment_navigation_drawer, (DrawerLayout) findViewById (R.id.drawer_layout), панель инструментов); drawerFragment.setDrawerListener (это); go_layout = (кнопка) findViewById (R.id.go_to_page); go_layout.setOnClickListener (новый View.OnClickListener () {@Override общественные недействительный OnClick (View вид) {Намерение Намерение = новый Intent (First_page.this, Full_page.class); startActivity (намерение); }}); } @Override общественного логический onCreateOptionsMenu (меню Menu) {// Накачайте меню; это добавляет элементы в панели действий, если он присутствует. . GetMenuInflater () надуваться (R.menu.menu_main, меню); возвращает истину; } @Override общественного логический onOptionsItemSelected (MenuItem элемент) {// Handle панели действий пункт щелкает здесь. Панель действий будет // автоматически обрабатывать клики по кнопке Home / Up до тех пор, // как вы указали родительское активность в AndroidManifest.xml. INT ID = item.getItemId (); // noinspection SimplifiableIfStatement если (идентификатор == R.id.right_btn) {Toast.makeText (First_page.this, "Right_btn щелкнул", Toast.LENGTH_LONG) .show (); drawerFragment = (FragmentDrawer) getSupportFragmentManager () findFragmentById (R.id.fragment_navigation_drawer). drawerFragment.setUp (R.id.fragment_navigation_drawer, (DrawerLayout) findViewById (R.id.drawer_layout), панель инструментов); drawerFragment.setDrawerListener (это); } Вернуть super.onOptionsItemSelected (пункт); } @Override общественное недействительный onDrawerItemSelected (View вид, внутр положение) {}}
FDM.Pro
1

голосов
2

ответ
2.7k

Просмотры

Изменить макет с панелью навигации

Когда я начинаю новый проект «панель навигации» в Android Studio уже есть некоторый код. Как я могу изменить расположение с помощью кнопок в выдвижном ящике? Навигационная Выдвижные выглядит следующим образом
Validor
1

голосов
1

ответ
519

Просмотры

Multiple checkable groups in NavigationDrawer stopped working after upgrading support design library

I am using NavigationView to display menu.xml data to my NavigationDrawer. It had two groups of checkable items. The first group could have any number of items checked at the same time, the second one could have only one checked. Support library versions used: compile 'com.android.support:appcompat-v7:22.2.1' compile 'com.android.support:design:22.2.0' xml code used for NavigationView After I upgraded the libraries to the newest: compile 'com.android.support:appcompat-v7:23.1.0' compile 'com.android.support:design:23.1.0' The checkable behavior changed. Now, when I click on the same item multiple times, it checks and unchecks itself, but when I select a different item, everything gets unchecked and only after another click on the same item, it gets checked. After looking at the source code of the two versions, I could not realize what the problem was. It looks a bit like this chackable behavior attribute is not considered at all in the new version. A bug of the lib or the whole implementation should be suddenly done differently?
vandus
1

голосов
1

ответ
1.2k

Просмотры

Android панель навигации, изменение текста / цвет парения

У меня есть два вопроса о шаблоне ящика навигации, которые дают андроид студии. ) Я хочу, чтобы изменить цвет текста меню ( «Notre Histoire» и т.д.) и парить выбранный элемент (здесь он зеленый, я хочу сделать это в другом цвете). Как вы можете видеть, я сумел изменить цвет фона бара действий (здесь в розовом цвете) и изменить цвет фона меню (здесь синий цвет). Но в моей ситуации я не нашел, как я могу изменить цвет текста и парить выбранные элементы. Мое ограничение в том, что я не могу коснуться файлов XML. Я должен сделать это программно. Вот как я даю свои меню строку для приложения: String [] strTabMenu = новый String [2]; strTabMenu [0] = "test1"; strTabMenu [1] = "test2"; mDrawerListView.setAdapter (новый ArrayAdapter (getActionBar (). getThemedContext (), android.R.layout.simple_list_item_activated_1, android.R.id.text1, strTabMenu)); Итак, как я теперь, с какой строкой коды, изменить цвет текста и цвет парения без создания / обновлений некоторых XML-файлов? Спасибо =)
Lucsartes
1

голосов
1

ответ
88

Просмотры

Adding tabs to app with navigationDrawerActivity

I am new to android and I am trying to learn by making a simple chat app in android studio. I started by creating a navigation drawer. Now I want to add tabs to my app like this - chats / contact / calls below navigation drawer, but I could not find a simple step by step tutorial for doing this. Before I started this chat app I worked on a simpler app and added some tabs to that old app like this: public class MainActivity extends TabActivity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Resources resources = getResources(); TabHost tabHost = getTabHost(); // First tab Intent intentTabOne = new Intent().setClass(this, TabOneActivity.class); TabSpec tabSpecTabOne = tabHost .newTabSpec("Tab One") .setIndicator("", resources.getDrawable(R.drawable.icon_one_config)) .setContent(intentTabOne); // Second tab Intent intentTabTwo = new Intent().setClass(this, TabTwoActivity.class); TabSpec tabSpecSecondTab = tabHost .newTabSpec("Tab Two") .setIndicator("", resources.getDrawable(R.drawable.icon_two_config)) .setContent(intentTabTwo); // Third tab Intent intentTabThree = new Intent().setClass(this, TabThree.class); TabSpec tabSpecSent = tabHost .newTabSpec("Tab Three") .setIndicator("", resources.getDrawable(R.drawable.icon_three_invitations_config)) .setContent(intentTabThree); // add all tabs tabHost.addTab(tabSpecTabOne); tabHost.addTab(tabSpecTabTwo); tabHost.addTab(tabSpecTabThree); //set Windows tab as default tabHost.setCurrentTab(0); } But now my main activity looks like this: public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } }); DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); ActionBarDrawerToggle toggle = new ActionBarDrawerToggle( this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); drawer.setDrawerListener(toggle); toggle.syncState(); NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); navigationView.setNavigationItemSelectedListener(this); } @Override public void onBackPressed()... Also, since TabActivity is now deprecated and I think I should use fragment, I got a little bit lost. I would really appreciate if someone could point me in the right direction. Thanks in advance.
Banana
1

голосов
1

ответ
643

Просмотры

FrameLayout и App / бар Действие Colliding

У меня странные проблемы, сталкивающихся Мой главный XML Мой content.xml Добавление андроида: layout_marginTop = это для всех макетов фрагментов решает проблему, но почему «атр / actionBarSize?»? Я думаю, что это из-за включать технику, которая используется в основной раскладке, но так как панель инструментов всегда есть и framelayout еще один виджет, но он начинает calculationg от верхней части приложения бара.
Mert Serimer
1

голосов
2

ответ
2.6k

Просмотры

issue with replacing Fragment views in Navigation drawer

I am using the android Navigation drawer template and fragments to display different views. as the normal there is a MainActivity, activity_main.xml and content_main.xml generated automatically. I have created two java classes; MusicFragment and MainFragment and of course the layout files which I have content inside. When I run the app the activity_main is the default layout launched which I have welcome content displaying, I am using the Navigation drawer to navigate to my MusicFragment and MainFragment, this code I using to replace the current view in the onNavigationItemSelected method is; if (id == R.id.nav_camara) { fm.beginTransaction().replace(R.id.content_frame, new MainFragment()).commit(); } else if (id == R.id.nav_gallery) { fm.beginTransaction().replace(R.id.content_frame, new MusicFragment()).commit(); these both work fine with replacing each other although I have a big problem, when I select the nav drawer and hit the camera option it shows the fragment view but does not replace the content from activity_main it shows the fragment content on top of the content_main and doesn't replace it. This is my MainActivity: package com.justmikey.justmik; import android.media.MediaPlayer; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; import android.support.v4.app.FragmentManager; import android.support.v7.internal.widget.ButtonBarLayout; import android.text.method.ScrollingMovementMethod; import android.view.View; import android.support.design.widget.NavigationView; import android.support.v4.view.GravityCompat; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import android.widget.Button; import android.widget.TextView; import JustMikey.Fragments.MainFragment; import JustMikey.Fragments.MusicFragment; public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { //create a media player object called mp MediaPlayer mp; //declare my buttons play, pause and stop Button play, pause,stop; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //Set the textView scrollMain to scrollable TextView tv = (TextView) findViewById(R.id.scrollMain); tv.setMovementMethod(new ScrollingMovementMethod()); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); ActionBarDrawerToggle toggle = new ActionBarDrawerToggle( this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); drawer.setDrawerListener(toggle); toggle.syncState(); NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); navigationView.setNavigationItemSelectedListener(this); } @Override public void onBackPressed() { DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); if (drawer.isDrawerOpen(GravityCompat.START)) { drawer.closeDrawer(GravityCompat.START); } else { super.onBackPressed(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } @SuppressWarnings("StatementWithEmptyBody") @Override public boolean onNavigationItemSelected(MenuItem item) { android.app.FragmentManager fm = getFragmentManager(); int id = item.getItemId(); if (id == R.id.nav_camara) { fm.beginTransaction().replace(R.id.content_frame, new MainFragment()).commit(); } else if (id == R.id.nav_gallery) { fm.beginTransaction().replace(R.id.content_frame, new MusicFragment()).commit(); } else if (id == R.id.nav_slideshow) { } else if (id == R.id.nav_manage) { } else if (id == R.id.nav_share) { } else if (id == R.id.nav_send) { } DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); drawer.closeDrawer(GravityCompat.START); return true; } } content_main.xml:
James Cosgrave
1

голосов
1

ответ
2.1k

Просмотры

Отключить индикатор ящика ActionBarDrawerToggle, но держать значок гамбургер

В моей основной деятельности я получаю ссылки на мой DrawerLayout и панели инструментов, как это: // Установить панель инструментов = (Панель инструментов) findViewById (R.id.toolbar); setSupportActionBar (панель инструментов); // Установить панель навигации ящик = (DrawerLayout) findViewById (R.id.drawer_layout); гамбургер = новый ActionBarDrawerToggle (это, ящик, панель инструментов, R.string.navigation_drawer_open, R.string.navigation_drawer_close); drawer.setDrawerListener (гамбургеров); hamburger.syncState (); В одном из своих фрагментов, я хочу, чтобы полностью отключить 1) ударяя открыть нав ящик и 2) кнопку гамбургер / тумблер для переключения Nav ящик открытия В настоящее время я делаю это так: mainActivity = (MainActivity) getActivity () ; mainActivity.drawer.setDrawerLockMode (DrawerLayout.LOCK_MODE_LOCKED_CLOSED); mainActivity.hamburger. setDrawerIndicatorEnabled (ложь); mainActivity.hamburger.syncState (); Смахивающее не обрабатываются правильно - он больше не открывает ящик. Значок гамбургер полностью исчез, хотя. В идеале, я хочу, чтобы значок гамбургер, чтобы оставаться на экране, но просто сидеть в заблокированном состоянии, так что он не делает ничего, при нажатии. Есть ли альтернатива setDrawerIndicatorEnabled, которая будет работать таким образом?
Simon
1

голосов
1

ответ
2.2k

Просмотры

Доля кнопка в Android навигации полке

I am trying to implement a Share Button in Navigation Drawer. I am not sure how we implement this. any help is appreciated. This is how far I have gone. Menu Item XML Navigation Drawer Navigation Activity using System; using System.Collections.Generic; using System.Linq; using System.Text; using Android.App; using Android.Content; using Android.OS; using Android.Runtime; using Android.Views; using Android.Support.V7.App; using Android.Support.Design.Widget; using Android.Support.V4.Widget; using Android.Support.V7.Widget; using TestNavigationAndroid.Fragments; using TestNavigationAndroid.Ads; using Android.Gms.Ads; using Android.Support.V4.View; namespace TestNavigationAndroid { [Activity(MainLauncher = true, Theme = "@style/MyTheme", Icon = "@drawable/icon")] public class NavigationDrawerActivity : AppCompatActivity { DrawerLayout drawerLayout; protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); // Create UI SetContentView(Resource.Layout.navigation); drawerLayout = FindViewById(Resource.Id.drawer_layout); // Init toolbar var toolbar = FindViewById(Resource.Id.toolbar); SetSupportActionBar(toolbar); // Attach item selected handler to navigation view var navigationView = FindViewById(Resource.Id.nav_view); navigationView.NavigationItemSelected += NavigationView_NavigationItemSelected; // Create ActionBarDrawerToggle button and add it to the toolbar var drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, Resource.String.open_drawer, Resource.String.close_drawer); drawerLayout.SetDrawerListener(drawerToggle); drawerToggle.SyncState(); //if first time you will want to go ahead and click first item. if (bundle == null) { SwitchFragments(Resource.Id.nav_fibonacci); } AdView _bannerad = FindViewById(Resource.Id.adView); //_bannerad = AdMobWrapper.ConstructStandardBanner(this, AdSize.SmartBanner, "ca-app-pub-8875162019282514/8222601087"); //dMobWrapper.CustomBuild(_bannerad); _bannerad.LoadAd(new AdRequest.Builder().Build()); // drawerLayout.AddView(_bannerad); // ShowShareActivity(); } void NavigationView_NavigationItemSelected(object sender, NavigationView.NavigationItemSelectedEventArgs e) { SwitchFragments(e.MenuItem.ItemId); //if (e.MenuItem.ItemId.Equals(Resource.Id.nav_share)) //{ // ShowShareActivity(e.MenuItem); //} //else //{ //} } private void SwitchFragments(int ItemId) { Android.Support.V4.App.Fragment fragment = null; switch (ItemId) { case (Resource.Id.nav_fibonacci): fragment = FibonacciSeries.NewInstance(); // React on 'Home' selection break; case (Resource.Id.nav_tshirt): // React on 'Messages' selection fragment = TshirtSize.NewInstance(); break; case (Resource.Id.nav_standard): // React on 'Friends' selection fragment = StandardFragment.NewInstance(); break; case (Resource.Id.nav_share): // React on 'Friends' selection ShowShareActivity(); break; } SupportFragmentManager.BeginTransaction() .Replace(Resource.Id.content_frame, fragment) .Commit(); // Close drawer drawerLayout.CloseDrawers(); } private void ShowShareActivity() { Intent sharingIntent = new Intent(Intent.ActionSend); sharingIntent.SetType("text/plain"); String shareBody = "Here is the share content body"; sharingIntent.PutExtra(Intent.ExtraSubject, "Subject Here"); sharingIntent.PutExtra(Intent.ExtraText, shareBody); var navigationView = FindViewById(Resource.Id.nav_view); var menu = navigationView.Menu; IMenuItem item = menu.FindItem(Resource.Id.nav_share); // Fetch and store ShareActionProvider ShareActionProvider mShareActionProvider = (ShareActionProvider)MenuItemCompat.GetActionProvider(item); mShareActionProvider.SetShareIntent(sharingIntent); } } } I am using Xamarin.Android. what I'm trying to achieve is when someone clicks on share button I world like to show a fragment with all available apps to share the information.I tried to set the ShareActionProvider based on Google Tutorial. Any Help here is appreciated.
Vijay aravind
1

голосов
1

ответ
687

Просмотры

Панель навигации не отображается значок гамбургера

В небольшом приложении, я хочу использовать панель навигации, но ни один ключ стрелка влево работает ни значок гамбургера ... Не могли бы вы выяснить проблему? MainActivity.java пакет com.example.bablu.zoo; импорт android.content.res.Configuration; импорт android.os.Bundle; импорт android.os.PersistableBundle; импорт android.support.design.widget.FloatingActionButton; импорт android.support.design.widget.Snackbar; импорт android.support.v4.widget.DrawerLayout; импорт android.support.v7.app.ActionBarDrawerToggle; импорт android.support.v7.app.AppCompatActivity; импорт android.support.v7.widget.Toolbar; импорт android.view.View; импорт android.view.Menu; импорт android.view.MenuItem; общественный класс MainActivity расширяет AppCompatActivity {личного DrawerLayout mDrawerLayout; частный ActionBarDrawerToggle mActionBarDrawerToggle; @Override защищены недействительный OnCreate (Пачка savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); Панель инструментов = (Панель инструментов) findViewById (R.id.toolbar); setSupportActionBar (панель инструментов); // Для навигационной панели, если (getSupportActionBar ()! = NULL) {getSupportActionBar () setDisplayShowHomeEnabled (истина). } GetSupportActionBar () setHomeButtonEnabled (истина). mDrawerLayout = (DrawerLayout) findViewById (R.id.drawer_layout); mActionBarDrawerToggle = новый ActionBarDrawerToggle (это, mDrawerLayout, R.string.drawer_opened, R.string.drawer_closed) {@Override общественного недействительными onDrawerOpened (View drawerView) {super.onDrawerOpened (drawerView); если (getSupportActionBar ()! = NULL) getSupportActionBar () SetTitle (R.string.drawer_opened). mActionBarDrawerToggle.syncState (); } @Override общественного недействительными onDrawerClosed (View drawerView) {super.onDrawerClosed (drawerView); если (getSupportActionBar ()! = NULL) getSupportActionBar () SETTITLE (R.string.drawer_closed). mActionBarDrawerToggle.syncState (); }}; mDrawerLayout.addDrawerListener (mActionBarDrawerToggle); } @Override общественного недействительный onPostCreate (Пачка savedInstanceState) {super.onPostCreate (savedInstanceState); mActionBarDrawerToggle.syncState (); // Вызов syncState () из вашей деятельности» s onPostCreate установить состояние индикатора // на основе ли drawerlayout находится в открытом или закрытом состоянии после того, как деятельность // была восстановлена ​​с onRestoreInstanceState. } @Override общественного недействительными onConfigurationChanged (Конфигурация newConfig) {super.onConfigurationChanged (newConfig); mActionBarDrawerToggle.onConfigurationChanged (newConfig); // Когда устройство вращается метод «onConfigurationChanged (newConfig» знает, когда ящик открыть или закрыть} @Override общественного логический onCreateOptionsMenu (меню Menu) {// Накачайте меню;. Это добавляет элементы в панели действий, если это .. настоящее getMenuInflater () надуваться (R.menu.menu_main, меню); возвращает истину; } @Override общественного логический onOptionsItemSelected (MenuItem элемент) {// Handle панели действий пункт щелкает здесь. Панель действий будет // автоматически обрабатывать клики по кнопке Home / Up до тех пор, // как вы указали родительское активность в AndroidManifest.xml. если (mActionBarDrawerToggle.onOptionsItemSelected (пункт)) возвращение правда; INT ID = item.getItemId (); // noinspection SimplifiableIfStatement если (идентификатор == R.id.action_settings) {возвращает истину; } Вернуть super.onOptionsItemSelected (пункт); }} Content_main.xml activity_main.xml Вот фотографии ниже: Спасибо! так долго, как вы // указать родительскую активность в AndroidManifest.xml. если (mActionBarDrawerToggle.onOptionsItemSelected (пункт)) возвращение правда; INT ID = item.getItemId (); // noinspection SimplifiableIfStatement если (идентификатор == R.id.action_settings) {возвращает истину; } Вернуть super.onOptionsItemSelected (пункт); }} Content_main.xml activity_main.xml Вот фотографии ниже: Спасибо! так долго, как вы // указать родительскую активность в AndroidManifest.xml. если (mActionBarDrawerToggle.onOptionsItemSelected (пункт)) возвращение правда; INT ID = item.getItemId (); // noinspection SimplifiableIfStatement если (идентификатор == R.id.action_settings) {возвращает истину; } Вернуть super.onOptionsItemSelected (пункт); }} Content_main.xml activity_main.xml Вот фотографии ниже: Спасибо! } Вернуть super.onOptionsItemSelected (пункт); }} Content_main.xml activity_main.xml Вот фотографии ниже: Спасибо! } Вернуть super.onOptionsItemSelected (пункт); }} Content_main.xml activity_main.xml Вот фотографии ниже: Спасибо!
Bablu Kumar
1

голосов
3

ответ
557

Просмотры

Реализация панели навигации в деятельности с фрагментами

Я в настоящее время перепроектирования моего приложения, чтобы включить навигацию ящик для навигации через приложение. В настоящее время, каждый экран является активностью и способом, который я разработал домашний экран, является то, что она содержит панель инструментов и другой файл XML. Теперь, я сделал еще один файл XML для панели навигации: Мой dilemna является то, что, так как моя панель инструментов в фрагменте home.xml, когда я включаю фрагменты, я потеряю панель инструментов. Я хочу, чтобы панель инструментов для всех видов в панели навигации. Кроме того, в моем Java коде, setActionBar (панель инструментов) бросает вверх ошибку говоря не может решить метод setActionBar.
Richeek Dey
1

голосов
1

ответ
1.4k

Просмотры

How to change item text color from a NavigationDrawer menu using styles.xml?

I have a Styles.xml file describing the colors of my NavigationDrawer: 16sp #880ACE0A I know that you should change this property of NavigationDrawer for the text colour: "app:itemTextColor", so I tryed adding it to my styles.xml file: 16sp #880ACE0A #880ACE0A After adding it i have this compilation error on the file styles.xml: Error:(12, 5) No resource found that matches the given name: attr 'app:itemTextColor'. How to set the colour of the text on the items of a NavigationDrawer menu? Thank you EDIT: This is my NavigationDrawer: And this is my drawer_menu.xml file: EDIT 2: This is not a duplicate of the other questions because it is mandatory for this case to specify the color in styles.xml file
1

голосов
2

ответ
1k

Просмотры

Навигация Выдвижные Фрагмент обрезается сверху

Я использую панель навигации шаблон на андроид, и я также с использованием фрагментов. Всякий раз, когда есть фрагмент, действие отсекает верхнюю часть фрагмента. Я не изменил код по умолчанию, кроме добавления в фрагменте. Как получить фрагмент для загрузки ниже панели действий? картина проблемы: * Обновление Теперь он выглядит как этот activity_main.xml фрагмент XML-приложение штрих основного XML
T. Yang
1

голосов
2

ответ
297

Просмотры

Выдвижные Просмотров не показывая

Мои взгляды ящика не показывая теперь он работает нормально, прежде чем я не сделал какие-либо изменений в макете или MainActivity, когда им не проверяя его, показывая ничего Моего XML Выдвижного меню MainActivity общественного класс MainActivity расширяет AppCompatActivity {DrawerLayout mDrawerLayout; NavigationView mNavigationView; FragmentManager mFragmentManager; FragmentTransaction mFragmentTransaction; @Override защищены недействительный OnCreate (Пачка savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); SetTitle ( "DocVids"); / ** * Настройте DrawerLayout и NavigationView * / mDrawerLayout = (DrawerLayout) findViewById (R.id.drawerLayout); mDrawerLayout.bringToFront (); mNavigationView = (NavigationView) findViewById (R.id.mynav); / ** * Позволяет надуть самый первый фрагмент * Здесь мы раздувания TabFragment как первый фрагмент * / mFragmentManager = getSupportFragmentManager (); mFragmentTransaction = mFragmentManager.beginTransaction (); mFragmentTransaction.replace (R.id.containerView, новый TabFragment ()) совершить (). / ** * Настройка клик по навигации Просмотр предметов. * / MNavigationView.setNavigationItemSelectedListener (новый NavigationView.OnNavigationItemSelectedListener () {@Override общественного логический onNavigationItemSelected (MenuItem MENUITEM) {mDrawerLayout.closeDrawers (); если (menuItem.getItemId () == R.id.nav_item_feedback) {FragmentTransaction fragmentTransaction = mFragmentManager. BeginTransaction (); fragmentTransaction.replace (R.id. . ContainerView, новый Feedback ()) совершить (); } Если (menuItem.getItemId () == R.id.nav_item_fav) {FragmentTransaction xfragmentTransaction = mFragmentManager.beginTransaction (); xfragmentTransaction.replace (R.id.containerView, новый TabFragment ()) совершить (). } Вернуться ложным; }}); / ** * Настройка ящика Переключение на панели инструментов * / панели инструментов android.support.v7.widget.Toolbar = (android.support.v7.widget.Toolbar) findViewById (R.id.toolbar); ActionBarDrawerToggle mDrawerToggle = новый ActionBarDrawerToggle (это, mDrawerLayout, панель инструментов, R.string.app_name, R.string.app_name); mDrawerToggle.syncState (); //mDrawerLayout.setDrawerListener(mDrawerToggle); mDrawerLayout.addDrawerListener (mDrawerToggle); } } Если (menuItem.getItemId () == R.id.nav_item_fav) {FragmentTransaction xfragmentTransaction = mFragmentManager.beginTransaction (); xfragmentTransaction.replace (R.id.containerView, новый TabFragment ()) совершить (). } Вернуться ложным; }}); / ** * Настройка ящика Переключение на панели инструментов * / панели инструментов android.support.v7.widget.Toolbar = (android.support.v7.widget.Toolbar) findViewById (R.id.toolbar); ActionBarDrawerToggle mDrawerToggle = новый ActionBarDrawerToggle (это, mDrawerLayout, панель инструментов, R.string.app_name, R.string.app_name); mDrawerToggle.syncState (); //mDrawerLayout.setDrawerListener(mDrawerToggle); mDrawerLayout.addDrawerListener (mDrawerToggle); } } Если (menuItem.getItemId () == R.id.nav_item_fav) {FragmentTransaction xfragmentTransaction = mFragmentManager.beginTransaction (); xfragmentTransaction.replace (R.id.containerView, новый TabFragment ()) совершить (). } Вернуться ложным; }}); / ** * Настройка ящика Переключение на панели инструментов * / панели инструментов android.support.v7.widget.Toolbar = (android.support.v7.widget.Toolbar) findViewById (R.id.toolbar); ActionBarDrawerToggle mDrawerToggle = новый ActionBarDrawerToggle (это, mDrawerLayout, панель инструментов, R.string.app_name, R.string.app_name); mDrawerToggle.syncState (); //mDrawerLayout.setDrawerListener(mDrawerToggle); mDrawerLayout.addDrawerListener (mDrawerToggle); } nav_item_fav) {FragmentTransaction xfragmentTransaction = mFragmentManager.beginTransaction (); xfragmentTransaction.replace (R.id.containerView, новый TabFragment ()) совершить (). } Вернуться ложным; }}); / ** * Настройка ящика Переключение на панели инструментов * / панели инструментов android.support.v7.widget.Toolbar = (android.support.v7.widget.Toolbar) findViewById (R.id.toolbar); ActionBarDrawerToggle mDrawerToggle = новый ActionBarDrawerToggle (это, mDrawerLayout, панель инструментов, R.string.app_name, R.string.app_name); mDrawerToggle.syncState (); //mDrawerLayout.setDrawerListener(mDrawerToggle); mDrawerLayout.addDrawerListener (mDrawerToggle); } nav_item_fav) {FragmentTransaction xfragmentTransaction = mFragmentManager.beginTransaction (); xfragmentTransaction.replace (R.id.containerView, новый TabFragment ()) совершить (). } Вернуться ложным; }}); / ** * Настройка ящика Переключение на панели инструментов * / панели инструментов android.support.v7.widget.Toolbar = (android.support.v7.widget.Toolbar) findViewById (R.id.toolbar); ActionBarDrawerToggle mDrawerToggle = новый ActionBarDrawerToggle (это, mDrawerLayout, панель инструментов, R.string.app_name, R.string.app_name); mDrawerToggle.syncState (); //mDrawerLayout.setDrawerListener(mDrawerToggle); mDrawerLayout.addDrawerListener (mDrawerToggle); } xfragmentTransaction.replace (R.id.containerView, новый TabFragment ()) совершить (). } Вернуться ложным; }}); / ** * Настройка ящика Переключение на панели инструментов * / панели инструментов android.support.v7.widget.Toolbar = (android.support.v7.widget.Toolbar) findViewById (R.id.toolbar); ActionBarDrawerToggle mDrawerToggle = новый ActionBarDrawerToggle (это, mDrawerLayout, панель инструментов, R.string.app_name, R.string.app_name); mDrawerToggle.syncState (); //mDrawerLayout.setDrawerListener(mDrawerToggle); mDrawerLayout.addDrawerListener (mDrawerToggle); } xfragmentTransaction.replace (R.id.containerView, новый TabFragment ()) совершить (). } Вернуться ложным; }}); / ** * Настройка ящика Переключение на панели инструментов * / панели инструментов android.support.v7.widget.Toolbar = (android.support.v7.widget.Toolbar) findViewById (R.id.toolbar); ActionBarDrawerToggle mDrawerToggle = новый ActionBarDrawerToggle (это, mDrawerLayout, панель инструментов, R.string.app_name, R.string.app_name); mDrawerToggle.syncState (); //mDrawerLayout.setDrawerListener(mDrawerToggle); mDrawerLayout.addDrawerListener (mDrawerToggle); } v7.widget.Toolbar) findViewById (R.id.toolbar); ActionBarDrawerToggle mDrawerToggle = новый ActionBarDrawerToggle (это, mDrawerLayout, панель инструментов, R.string.app_name, R.string.app_name); mDrawerToggle.syncState (); //mDrawerLayout.setDrawerListener(mDrawerToggle); mDrawerLayout.addDrawerListener (mDrawerToggle); } v7.widget.Toolbar) findViewById (R.id.toolbar); ActionBarDrawerToggle mDrawerToggle = новый ActionBarDrawerToggle (это, mDrawerLayout, панель инструментов, R.string.app_name, R.string.app_name); mDrawerToggle.syncState (); //mDrawerLayout.setDrawerListener(mDrawerToggle); mDrawerLayout.addDrawerListener (mDrawerToggle); }
hatib abrar
1

голосов
2

ответ
526

Просмотры

Add a list view inside the navigation view

I've created a navigation drawer Activity in Android Studio. In the navigation drawer's xml file there is a navigation view and refers to a menu. But I want the navigation view to refer to a list view. I've done it in xml but i get an error which it says the text id that i refer to create my list items are called on a null object. How i can fix this? Here's my logcat: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:399) at android.widget.ArrayAdapter.getView(ArrayAdapter.java:369) at android.widget.AbsListView.obtainView(AbsListView.java:2346) at android.widget.ListView.makeAndAddView(ListView.java:1876) at android.widget.ListView.fillDown(ListView.java:702) at android.widget.ListView.fillFromTop(ListView.java:763) at android.widget.ListView.layoutChildren(ListView.java:1685) at android.widget.AbsListView.onLayout(AbsListView.java:2148) at android.view.View.layout(View.java:16668) at android.view.ViewGroup.layout(ViewGroup.java:5443) at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743) at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586) at android.widget.LinearLayout.onLayout(LinearLayout.java:1495) at android.view.View.layout(View.java:16668) at android.view.ViewGroup.layout(ViewGroup.java:5443) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336) at android.widget.FrameLayout.onLayout(FrameLayout.java:273) at android.view.View.layout(View.java:16668) at android.view.ViewGroup.layout(ViewGroup.java:5443) at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:1221) at android.view.View.layout(View.java:16668) at android.view.ViewGroup.layout(ViewGroup.java:5443) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336) at android.widget.FrameLayout.onLayout(FrameLayout.java:273) at android.view.View.layout(View.java:16668) at android.view.ViewGroup.layout(ViewGroup.java:5443) at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743) at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586) at android.widget.LinearLayout.onLayout(LinearLayout.java:1495) at android.view.View.layout(View.java:16668) at android.view.ViewGroup.layout(ViewGroup.java:5443) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336) at android.widget.FrameLayout.onLayout(FrameLayout.java:273) at android.view.View.layout(View.java:16668) at android.view.ViewGroup.layout(ViewGroup.java:5443) at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743) at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586) at android.widget.LinearLayout.onLayout(LinearLayout.java:1495) at android.view.View.layout(View.java:16668) at android.view.ViewGroup.layout(ViewGroup.java:5443) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336) at android.widget.FrameLayout.onLayout(FrameLayout.java:273) at com.android.internal.policy.PhoneWindow$DecorView.onLayout(PhoneWindow.java:2733) at android.view.View.layout(View.java:16668) at android.view.ViewGroup.layout(ViewGroup.java:5443) at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2171) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1931) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6042) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:876) at android.view.Choreographer.doCallbacks(Choreographer.java:688) at android.view.Choreographer.doFrame(Choreographer.java:624) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:862) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5468) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) java code: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } }); DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); ActionBarDrawerToggle toggle = new ActionBarDrawerToggle( this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); drawer.setDrawerListener(toggle); toggle.syncState(); NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); navigationView.setNavigationItemSelectedListener(this); ... View drawerLayout = (View) findViewById(R.id.nav_view); ArrayList counters = new ArrayList(); counters.add("Sayaç 1"); counters.add("Sayaç 2"); counters.add("Sayaç 3"); counters.add("Sayaç 4"); counters.add("Sayaç 5"); ArrayAdapter arrayAdapter = new ArrayAdapter(this, R.layout.activity_main, android.R.id.text1, counters); ListView listView = (ListView) findViewById(R.id.list); listView.setAdapter(arrayAdapter); } ... @Override public void onBackPressed() { DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); if (drawer.isDrawerOpen(GravityCompat.START)) { drawer.closeDrawer(GravityCompat.START); } else { super.onBackPressed(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } @SuppressWarnings("StatementWithEmptyBody") @Override public boolean onNavigationItemSelected(MenuItem item) { // Handle navigation view item clicks here. int id = item.getItemId(); if (id == R.id.nav_camera) { // Handle the camera action } else if (id == R.id.nav_gallery) { } else if (id == R.id.nav_slideshow) { } else if (id == R.id.nav_manage) { } else if (id == R.id.nav_share) { } else if (id == R.id.nav_send) { } DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); drawer.closeDrawer(GravityCompat.START); return true; } }
gmavişşş
1

голосов
1

ответ
281

Просмотры

Сохранение данных на PopBackStack

У меня есть одна деятельность, которая использует два фрагмента, MainFragment и DetailFragment. MainFragment имеет развернутое представление списка, который имеет названия компаний, как группы и названия мест, как дети. Когда пользователь выбирает категорию из навигационной панели обновляет данные в адаптере и обновляет расширяемый список, отображающий правильные компании. Когда пользователь выбирает место он открывает DetailFragment с информацией об этом месте и сотрудниках. Проблема у меня, когда я шаг назад. Когда я нажимаю кнопку назад он сбрасывает в категорию по умолчанию, и я понял, что это потому, что это опять вызов метода onViewCreated (), который является, где я настраивал свои взгляды и адаптер. Странная вещь, он помнит, что элементы списка были расширены, по индексу. Так что, если у меня был третий пункт расширен в другой категории, третий пункт в категории по умолчанию по-прежнему расширяется. То, что я хотел бы знать, как я могу его сохранить настройки у меня было, когда я нажимаю назад? Мой MainFragment общественного класс MainFragment расширяет фрагмент реализует ExpandableListView.OnChildClickListener, NavigationSelectedListener {частный адаптер CompaniesExpandableListAdapter; общественный MainFragment () {// Обязательной пустого открытого конструктор} @Override общественный недействительный OnCreate (@Nullable Bundle savedInstanceState) {super.onCreate (savedInstanceState); } @Override общественности Посмотреть onCreateView (LayoutInflater инфлятор, ViewGroup контейнер, Bundle savedInstanceState) {// Накачайте макет для этого возвращения фрагмента inflater.inflate (R.layout.fragment_main, контейнер, ложь); } @Override общественного недействительный onViewCreated (View вид, @Nullable Пачка savedInstanceState) {super.onViewCreated (вид, savedInstanceState); connectViews (вид); } Частная пустота connectViews (View вид) {окончательный ExpandableListView companyListView = (ExpandableListView) view.findViewById (R.id.companyListView); Окончательный переход navigationItem = ((MainActivity) getActivity ()) getNavigationItems () первый ()..; . GetActivity () SetTitle (navigationItem.getTitle ()); Адаптер = новый CompaniesExpandableListAdapter (navigationItem.getCompanies ()); companyListView.setAdapter (адаптер); companyListView.setOnChildClickListener (это); } // ExpandableListView.OnChildClickListener @Override общественного логический onChildClick (ExpandableListView родитель, Вид v, внутр groupPosition, внутр childPosition, длинный ID) {конечная DetailFragment detailFragment = новый DetailFragment (); Окончательная Bundle арг = новый пакет (); args.putInt (GetString (R.string.extra_location_key), ((МЕСТОПОЛОЖЕНИЕ) adapter.getChild (groupPosition, childPosition)) getPrimaryKey ().); detailFragment.setArguments (арг); getFragmentManager () .beginTransaction () .Надеть (R.id.contentFrame, detailFragment, GetString (R.string.tag_fragment_detail)) .addToBackStack (нуль) .commit (); вернуться ложным; } // NavigationSelectedListener @Override общественного недействительный onNavigationItemSelected (Navigation navigationItem) {// Возвращаемся к основному фрагменту. . GetFragmentManager () popBackStack (GetString (R.string.tag_fragment_main), FragmentManager.POP_BACK_STACK_INCLUSIVE); // Отправка выбранного элемента к адаптеру. adapter.updateData (navigationItem.getCompanies ()); . GetActivity () SetTitle (navigationItem.getTitle ()); }} И мой MainActivity общественного класса MainActivity расширяет AppCompatActivity реализует NavigationView.OnNavigationItemSelectedListener {личного NavigationSelectedListener navigationCallback; частный DrawerLayout drawerLayout; частные RealmResults navigationItems; частный MainFragment mainFragment = новый MainFragment (); @Override защищены недействительный OnCreate (Пачка savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); buildNavigationDrawer (); connectViews (); } @Override общественного недействительными onBackPressed () {если (drawerLayout.isDrawerOpen (GravityCompat. СНВ)) drawerLayout.closeDrawer (GravityCompat.START); остальное super.onBackPressed (); } @Override общественного логический onNavigationItemSelected (@NonNull MenuItem элемент) {navigationCallback.onNavigationItemSelected (navigationItems.get (item.getItemId ())); drawerLayout.closeDrawer (GravityCompat.START); возвращает истину; } Частного недействительный connectViews () {navigationCallback = mainFragment; getFragmentManager () .beginTransaction () .Надеть (R.id.contentFrame, mainFragment, GetString (R.string.tag_fragment_main)) .commit (); } Частная пустота buildNavigationDrawer () {конечная панель инструментов = (панель) findViewById (R.id.toolbar); setSupportActionBar (панель инструментов); drawerLayout = (DrawerLayout) findViewById (R.id.drawer_layout); Окончательный ActionBarDrawerToggle тумблер = новый ActionBarDrawerToggle (это, drawerLayout, панель инструментов, R.string.navigation_drawer_open, R.string.navigation_drawer_close) {@Override общественного недействительными onDrawerStateChanged (интермедиат NewState) {super.onDrawerStateChanged (NewState); // Скрытие клавиатуры устройства при открытии панели навигации. если (getCurrentFocus ()! = NULL) ((InputMethodManager) getSystemService (INPUT_METHOD_SERVICE)) hideSoftInputFromWindow (getCurrentFocus () getWindowToken (), 0)..; }}; drawerLayout.addDrawerListener (переключение); toggle.syncState (); fillNavigationDrawer (); } Общественного RealmResults getNavigationItems () {вернуть navigationItems; }} navigation_drawer_open, R.string.navigation_drawer_close) {@Override общественные недействительный onDrawerStateChanged (интермедиат NewState) {super.onDrawerStateChanged (NewState); // Скрытие клавиатуры устройства при открытии панели навигации. если (getCurrentFocus ()! = NULL) ((InputMethodManager) getSystemService (INPUT_METHOD_SERVICE)) hideSoftInputFromWindow (getCurrentFocus () getWindowToken (), 0)..; }}; drawerLayout.addDrawerListener (переключение); toggle.syncState (); fillNavigationDrawer (); } Общественного RealmResults getNavigationItems () {вернуть navigationItems; }} navigation_drawer_open, R.string.navigation_drawer_close) {@Override общественные недействительный onDrawerStateChanged (интермедиат NewState) {super.onDrawerStateChanged (NewState); // Скрытие клавиатуры устройства при открытии панели навигации. если (getCurrentFocus ()! = NULL) ((InputMethodManager) getSystemService (INPUT_METHOD_SERVICE)) hideSoftInputFromWindow (getCurrentFocus () getWindowToken (), 0)..; }}; drawerLayout.addDrawerListener (переключение); toggle.syncState (); fillNavigationDrawer (); } Общественного RealmResults getNavigationItems () {вернуть navigationItems; }} // Скрытие клавиатуры устройства при открытии панели навигации. если (getCurrentFocus ()! = NULL) ((InputMethodManager) getSystemService (INPUT_METHOD_SERVICE)) hideSoftInputFromWindow (getCurrentFocus () getWindowToken (), 0)..; }}; drawerLayout.addDrawerListener (переключение); toggle.syncState (); fillNavigationDrawer (); } Общественного RealmResults getNavigationItems () {вернуть navigationItems; }} // Скрытие клавиатуры устройства при открытии панели навигации. если (getCurrentFocus ()! = NULL) ((InputMethodManager) getSystemService (INPUT_METHOD_SERVICE)) hideSoftInputFromWindow (getCurrentFocus () getWindowToken (), 0)..; }}; drawerLayout.addDrawerListener (переключение); toggle.syncState (); fillNavigationDrawer (); } Общественного RealmResults getNavigationItems () {вернуть navigationItems; }} fillNavigationDrawer (); } Общественного RealmResults getNavigationItems () {вернуть navigationItems; }} fillNavigationDrawer (); } Общественного RealmResults getNavigationItems () {вернуть navigationItems; }}
Cody Harness
1

голосов
2

ответ
450

Просмотры

Навигация ящик закругленный угол фон для предметов

Я хочу иметь закругленный угол для элементов в панели навигации, как это: это пример материального дизайна в веб-сайт material.io это возможно?
Milad

Просмотр дополнительных вопросов