После прочтения всех комментариев и ответов я собираюсь объяснить оптимальное решение этой проблемы. Лучшим вариантом является решение @ rik, поэтому мое улучшение основывается на его.
Вместо того, чтобы задавать каждый FragmentClass, как
if(FragmentClass1){
...
if(FragmentClass2){
...
}
Создайте свой собственный интерфейс и создайте его дочерние фрагменты, например
public interface MyChildFragment {
void updateView(int position);
}
Затем вы можете сделать что-то подобное, чтобы инициировать и обновлять внутренние фрагменты.
Fragment childFragment = (Fragment) mViewPagerDetailsAdapter.instantiateItem(mViewPager,mViewPager.getCurrentItem());
if (childFragment != null) {
((MyChildFragment) childFragment).updateView();
}
PS Будьте осторожны, когда вы вставляете этот код, если вы вызываете insatiateItem до того, как система действительно создаст его, savedInstanceState
вашего дочернего фрагмента будет пустым для него
public void onCreate(@Nullable Bundle savedInstanceState){
super(savedInstanceState)
}
Сбой вашего приложения.
Удачи
Firebird использует набор символов соединения, чтобы знать, как нужно кодировать строковые значения. По умолчанию установлено значение NONE
, что означает, что преобразование набора символов не применяется, и точное поведение зависит от инструмента / клиента, но в целом клиенты применяют набор символов системы по умолчанию для преобразования между байтовыми значениями и строками.
Вам необходимо указать набор символов подключения UTF8 при подключении из FlameRobin, и ваш запрос будет работать
SELECT NAME FROM TABLE1 WHERE NAME = 'العربية'
Если вы не укажете набор символов подключения, тогда набор символов подключения NONE применяется, и в результате значения строк будут интерпретироваться в кодировке платформы по умолчанию (которая в Windows - не utf8, а, например, windows-1252).
Не используйте литералы. Не помещайте данные в текст запроса, поместите их вне запроса как «параметры».
Он имеет ряд преимуществ, таких как более надежный синтаксический анализ, большая проверка типов, большая безопасность и часто более высокая скорость (вы можете подготовить запрос один раз, а затем многократно выполнять его, только изменяя значение параметров).
Способ кодирования параметров в запросах SQL зависит от библиотеки, которую вы используете в своем языке программирования для подключения к Firebird. См. http://bobby-tables.com/ для некоторых примеров. Ниже приведены три часто используемых соглашения:
SELECT NAME FROM TABLE1 WHERE NAME = ?
- изначально поддерживается Firebird, доступ к параметрам на основе индекса SELECT NAME FROM TABLE1 WHERE NAME = :NAME_PARAM
- стиль BDE / Delphi SELECT NAME FROM TABLE1 WHERE NAME = @NAME_PARAM
- стиль MS SQL / .Net Я не знаю, какие разновидности поддерживаются в Flame Robin и Maestro. IB Expert использует библиотеки Delphi, поэтому использует параметр # 2. Программы, написанные на Java, как правило, используют опцию № 1.
Для соединений ADO.NET включайте" Charset=UTF8" (по умолчанию "НИ ОДИН") в строке подключения. Как в:
"User=SYSDBA; Password=masterkey; Database=SampleDatabase.fdb; DataSource=localhost; Port=3050; Dialect=3; Charset=UTF8; Роль =; Соединение lifetime=15; Pooling=true; MinPoolSize=0; MaxPoolSize=50; Пакет Size=8192; ServerType=0";