0

Мое приложение использует вкладки с навигацией по навигации, определенной в developer.google.com, где я использую FragmentPagerAdapter.Доступность Android, сосредоточиться на заголовке третьей вкладки при использовании фрагментов, фокус должен быть на текущем названии вкладки вместо этого?

При попытке убедиться, что мое приложение доступно, я наткнулся на следующую проблему:

Когда приложение запускается, то onCreateView (...) 1-го фрагмента называется, за ними следуют из 2-й и 3-й фрагменты. Вследствие этого заголовок третьей вкладки имеет фокус, когда приложение запускается и считывается, даже если первая вкладка в настоящее время отображается пользователю, и ее заголовок должен быть зачитан.

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

Есть ли способ исправить это, чтобы при запуске заголовок первой вкладки имел фокус и считывался.

P.S. Я попытался исправить это, отправив событие доступности из метода setUserVisibleHint (...) первого фрагмента, но это не работает, по крайней мере, на Android 4.4. Событие доступности, которое я отправляю, является вызовом одной из функций sendAccessibilityEvent для текстового представления 1-го фрагмента. Опять же, чтобы уточнить, проблема не в событии доступности, это работает отлично, когда приложение запущено, и я просматриваю вкладки. Проблема заключается в том, что при запуске фокус приложения не находится на отображаемом в данный момент фрагменте, а вместо этого на фрагменте, чья onCreateView() была вызвана последним.

+0

Как вы отправляете свои события доступности? Можете ли вы предоставить код? – Ayzen

+0

Вы нашли решение этой проблемы? – sowmia

ответ

0

ли это в вашем mainactivity метод GetItem .. что-то вроде этого ..

public class SectionsPagerAdapter extends FragmentPagerAdapter { 

    public SectionsPagerAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     // getItem is called to instantiate the fragment for the given page. 
     // Return a Fragment 

     if (position == 0) { 
      return //Fragment 1; 
     } 
     if (position == 1) { 
      return //Fragment 2; 
     } 

     if (position == 2) { 
      return //Fragment 3; 
     } 
     return null; 
    } 

    @Override 
    public int getCount() { 
     // Show 3 total pages. 
     return 3; 
    } 

Вы должны осуществить что-то вроде выше в следующей части кода ..

public class DemoCollectionPagerAdapter extends FragmentStatePagerAdapter { 
    public DemoCollectionPagerAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public Fragment getItem(int i) { 
     Fragment fragment = new DemoObjectFragment(); 
     Bundle args = new Bundle(); 
     // Our object is just an integer :-P 
     args.putInt(DemoObjectFragment.ARG_OBJECT, i + 1); 
     fragment.setArguments(args); 
     return fragment; 
    } 

    @Override 
    public int getCount() { 
     return 100; 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     return "OBJECT " + (position + 1); 
    } 
} 

выше код из сайт разработчика Google, о котором вы упомянули.

+0

Я должен был уточнить, что я действительно реализовал FragmentPagerAdapter, а не FragmentStatePagerAdapter. Спасибо за ответ в любом случае. –

+0

При создании нового проекта в Eclipse вы можете автоматически генерировать код для представления с вкладками. В разделе «Создать раздел» выберите «Активность с вкладками», а в следующем диалоговом окне выберите стиль навигации по своему желанию. Вы можете создать приложение поверх него .. очень легко и экономить время .. и PLS отмечают мои азы как правильные, если это вас укусило (idk, если вы можете или нет .. я новичок, и мне нужны некоторые моменты, которые я думаю ..) Спасибо: D –