Перейти к содержанию
Fire Monkey от А до Я
  • 1

Проблема при активации memo или edit программа зависает и закрывается.


Aleks.win

Вопрос

Рекомендуемые сообщения

  • 0
  • Модераторы

проект приложите без бинарников

 

update:

проблем не выявлено

попробуйте использовать

SetFocused(Edit1);

Или как-то так

ActiveControl := Edit1;
Изменено пользователем ZuBy
Ссылка на комментарий
  • 0

Ок

 

 

проект приложите без бинарников

 

update:

проблем не выявлено

попробуйте использовать

SetFocused(Edit1);

Или как-то так

ActiveControl := Edit1;

Ошибка вылетает при активации (нажатии) ячейки.  

Ссылка на комментарий
  • 0

Вот проект. Там нет ничего кроме TEdit. Ошибка срабатывает на Edit1.SetFocus. Что деталь не знаю.     

Сегодня нарвался на эту проблему, когда скомпилировал свой проект на планшете с Андройд 5.0.2 :)

Ссылка на комментарий
  • 0

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

Так что, исходники в руки и вперед в отладку. Хотя и это не панацея.

Ссылка на комментарий
  • 0

У меня тоже была проблема на устройствах:
Samsung S6 , ОС: Lolipop 5.1.1
Samsung s4 , ОС: Lolipop 5.0

при активации Edit, программа просто закрывалась с сообщением "Project1 Stopped working.". Однако при создании нового проекта такого не происходило. Так и не смог разобраться.

Изменено пользователем Alexander616
Ссылка на комментарий
  • 0

проблем не выявлено

попробуйте использовать

SetFocused(Edit1);

 

Не обязательно вызывать фокус программно, достаточно просто пальцем ткнуть в Memo, как появляется ошибка

error.png

Ссылка на комментарий
  • 0

на новом проекте тоже?

 

в манифесте android есть строка - <uses-feature android:glEsVersion="0x00020000" android:required="True"/> ?

 

может что то прояснит - http://stackoverflow.com/questions/26985858/gles10-glgetintegerv-returns-0-in-lollipop-only/27092070#27092070

Изменено пользователем haword
Ссылка на комментарий
  • 0

на новом проекте тоже?

 

в манифесте android есть строка - <uses-feature android:glEsVersion="0x00020000" android:required="True"/> ?

 

 В новом проекте та же ошибка (у меня Delphi 10 Seattle)   :wacko:  В манифесте эта строчка есть. Что она означает?

ничего из написанного там не понял, тем более что там про JAVA

Изменено пользователем Rusland
Ссылка на комментарий
  • 0

Было бы неплохо продублировать сюда ответ из Stackoverflow, если он вам помог :)

 

 

Ответ со Stackoverflow действительно помог!

 

Из папки source/fmx берем FMX.Platform.Android.pas кладем в папку с проектом.

Меняем в нем следующие процедуры:

procedure TPlatformAndroid.RunOnUIThread(Proc: TThreadProcedure);
begin
  //MainActivity.runOnUiThread(TSimpleProcedureRunner.Create(Proc));
  CallInUIThread(
  procedure()
  begin
    Proc;
  end);
end;

procedure TPlatformAndroid.SynchronizeOnUIThread(Proc: TThreadProcedure);
//var
//  Runner: TSimpleProcedureRunner;
begin
//  CallInUIThread(
//  procedure()
//  begin
//  Runner := TSimpleProcedureRunner.Create(Proc);
//  MainActivity.runOnUiThread(Runner);
//  Runner.Event.WaitFor;
//  end);
  CallInUIThreadAndWaitFinishing(
  procedure()
  begin
    Proc;
  end);
end;

procedure TPlatformAndroid.SetClipboard(Value: TValue);
//var
//  Setter: TClipboardSetter;
//begin
//  Setter := TClipboardSetter.Create(Value.ToString);
//  TAndroidHelper.Activity.runOnUiThread(Setter);
//  Setter.Done.WaitFor(INFINITE);
var
  Setter: TClipboardSetter; 
begin 
  Setter := TClipboardSetter.Create(Value.ToString); 
  CallInUIThread( procedure() 
  begin 
    SharedActivity.runOnUiThread(Setter); 
  end); 
  Setter.Done.WaitFor(INFINITE); 
end; 

function TPlatformAndroid.GetClipboard: TValue;
//var
//  Getter: TClipboardGetter;
//begin
//  Getter := TClipboardGetter.Create;
//  TAndroidHelper.Activity.runOnUiThread(Getter);
//  Getter.Done.WaitFor(INFINITE);
//  Result := Getter.Value;
var
  Getter: TClipboardGetter; 
begin 
  Getter := TClipboardGetter.Create; 
  CallInUIThread( procedure() 
  begin 
    SharedActivity.runOnUiThread(Getter); 
  end); 
  Getter.Done.WaitFor(INFINITE); 
  Result := Getter.Value; 
end;

Запускаем и при нажатии на Edit или Memo клавиатура нормально появляется.

 

PS. Надеюсь Embarcadero исправит эту проблему в новой версии.

 

 

 

помогло? если да то надо будет у себя то же править что бы не словить такой глюк  :)

Да, помогло :) Видимо словить такой глюк могут аппараты Lenovo - что-то в их виртуальной клавиатуре не как у всех

 

PS. Вопрос Бровину Ярославу:

Будет ли исправлен Androidapi.Helpers.pas? Постоянно с ним какие-нибудь проблемы. В сервисах его даже подключать опасно, обязательно вылезают ошибки касающиеся TAndroidHelper.Activity

 

С уважением, ... дата... подпись

Изменено пользователем Rusland
Ссылка на комментарий
  • 0

гм, хз насчет хелпера но ругается у меня на устаревший вызов. 
 
и да если есть время попробуйте в получении из буфера и посылки туда данных найти
 
SharedActivity.runOnUiThread(
заменить на 
TAndroidHelper.Activity.runOnUiThread(

 

и проверить работает или нет у вас?

Ссылка на комментарий
  • 0

С выходом новой версии студии Berlin вернулась старая болячка на моем планшете - падение при фокусе Edita. Исправил  FMX.Platform.Android.pas почти также как в прошлый раз и проблема ушла:

procedure TPlatformAndroid.RunOnUIThread(Proc: TThreadProcedure);
begin
  //MainActivity.runOnUiThread(TSimpleProcedureRunner.Create(Proc));
  CallInUIThread(
  procedure()
  begin
    Proc;
  end);
end;

procedure TPlatformAndroid.SynchronizeOnUIThread(Proc: TThreadProcedure);
//var
//  Runner: TSimpleProcedureRunner;
begin
//  Runner := TSimpleProcedureRunner.Create(Proc);
//  MainActivity.runOnUiThread(Runner);
//  Runner.Event.WaitFor;
  CallInUIThreadAndWaitFinishing(
  procedure()
  begin
    Proc;
  end);
end;

 

Изменено пользователем Rusland
Ссылка на комментарий
  • 0
В 20.04.2016 в 17:54, Rusland сказал:

С выходом новой версии студии Berlin вернулась старая болячка на моем планшете - падение при фокусе Edita. Исправил  FMX.Platform.Android.pas почти также как в прошлый раз и проблема ушла:

Коллеги, подскажите плиз, как использовать метод CallInUIThreadAndWaitFinishing? Как ловить событие окончания вызова?

Не смог найти документацию.

 

Ссылка на комментарий
  • 0

У меня на планшете DEXP Ursus TS170 тоже была такая проблема. Компоненты типа TEdit  и TMemo  подвешивали программу. Хотя на нескольких других планшетах и смартфонах все работало. Допиливание  FMX.Platform.Android.pas указанное выше помогло. Спасибо всем!!!!!

ЗЫ А сколько еще есть таких глюков?  

Изменено пользователем Юрий Гусач
Ссылка на комментарий
  • 0
  • Модераторы
10 минут назад, Юрий Гусач сказал:

У меня на планшете DEXP Ursus TS170 тоже была такая проблема. Компоненты типа TEdit  и TMemo  подвешивали программу. Хотя на нескольких других планшетах и смартфонах все работало. Допиливание  FMX.Platform.Android.pas указанное выше помогло. Спасибо всем!!!!!

ЗЫ А сколько еще есть таких глюков?  

никто незнает, все найденные "глюки" решаем по месту

Ссылка на комментарий
  • 0

 

В 23.09.2016 в 21:36, ZuBy сказал:

никто незнает, все найденные "глюки" решаем по месту

 У меня такой интересный вопрос к ZuBy, другим продвинутым  пользователям а также к Ярославу:  на этом форуме по крайней мере в двух разных темах я видел разные варианты редактированного модуля  FMX.Platform.Android.pas.

Исправленный вариант есть в этой теме, и еще один я видел в теме, посвященной работе с Intel процессорами под Android-ом.  А есть ли где-нибудь вариант исправленный наиболее полным образом на текущее время? 

Можно ли его опубликовать? Вопрос не очень праздный.  На проект как всегда очень мало времени, а глюки уже  отняли много нервов. Я очень признателен участникам форума, он   

реально очень помогает!  В работе с Android я новичок, а так начинал в Delphi, если можно сказать с Turbo Pascal 6.0 во времена DOS. Борьба с Глюками - это наше все!  :-) :-) :-)   

Изменено пользователем Юрий Гусач
Ссылка на комментарий
  • 0
  • Модераторы
11 часов назад, Юрий Гусач сказал:

 

 У меня такой интересный вопрос к ZuBy, другим продвинутым  пользователям а также к Ярославу:  на этом форуме по крайней мере в двух разных темах я видел разные варианты редактированного модуля  FMX.Platform.Android.pas.

Исправленный вариант есть в этой теме, и еще один я видел в теме, посвященной работе с Intel процессорами под Android-ом.  А есть ли где-нибудь вариант исправленный наиболее полным образом на текущее время? 

Можно ли его опубликовать? Вопрос не очень праздный.  На проект как всегда очень мало времени, а глюки уже  отняли много нервов. Я очень признателен участникам форума, он   

реально очень помогает!  В работе с Android я новичок, а так начинал в Delphi, если можно сказать с Turbo Pascal 6.0 во времена DOS. Борьба с Глюками - это наше все!  :-) :-) :-)   

есть три варианта:

1) Full Screen (в основном для игр используется)

2) исправленный FMX.Platform.Android (но там не все гладко, контролы чуть ниже становятся)

3) третий вариант (тоже есть ньюансы с планшетами и расположением NavBar'a)

Ссылка на комментарий

Присоединяйтесь к обсуждению

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

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...