이번 갤럭시 워치4는 알다시피 Wear OS의 안드로이드 기반이다
그러나 파이어몽키의 Edit를 추가하고 빌드하고 내용을 작성하기 위해 클릭했더니
아래의 사진처럼 에러가 뜨는 현상이 발생한다 그럴때 해결하는 방법은 아래에 있다

해결 방안
TEdit의 ControlType속성을 Platform으로 변경함으로써 Android기본 컨트롤에는 바뀌게 된다
즉 Edit1.ControlType := TPresentedControl.TControlType.Platform 로 변경하셔도 되고 또는
직접 변경 해줘도 된다


필자는 좀더 특이하게 해보려 했지만 위가 더 심플하고 아래에는 숙제에 해당이 되는것 같다
edit_text.xml의 파일을 작성하고 파이어몽키의 리소스 레이아웃 폴더에 넣어 해당 EditText를 컨텐트뷰하여 내용을 가져오는 방식을 하려 했다.

작성한 edit_text.xml파일은 해당 앱 res/layout에 들어간다

그럼 아래의 코드를 짜보았다
1순위로 edit_text.xml의 레이아웃 setContentView를 해줘야 한다
setContentView하자마자 해당 edit_text.xml 내용의 레이아웃이 화면에 표시가 된다


그후 2순위로 해당 EditText의 내용갖고 오기 위해
델파이 코드 LayoutID1 변수 처리에는 edit_text의 android:id="@+id/edit_text"<<를 했기 때문에 해당 LayoutID1 번지수를 잘 찾을수 있게 된것이고


그후 JEditText의 자바의 EditText로 뜻하기도 하며 위치를 특정 해준다
FindViewById의 아까 찾은 LayoutID1를 넣어주고 정보를 얻는다
그후 getText의 tostring하면 해당 xml의 android:text 내용이 고대로 갖고와서 출력이 되는것을 볼수가 있다
또는 앱 자체에서 EditText에 다르게 작성해도 잘나온다
※ 워치에서도 테스트 잘 되지만 스마트폰이 유선 케이블 연결이 빨라서 폰 캡처를 하였다.



그러면 xml에 작성한 EditText의 클릭 이벤트는 어떻게 하냐면 쉽게 이벤트를 대입 시켜주면 된다
아래의 본인이 작성한 코드 대입을 시켜주면 된다
KMSClcikEvent = class(TJavaLocal,JView_OnClickListener)
private
ClickTmp : TProc;
public
constructor Create(const Tmp : TProc);
procedure onClick(v: JView); cdecl;
end;
var EdtClickEvent : JView_OnClickListener;
constructor KMSClcikEvent.Create(const Tmp : TProc);
begin
inherited Create;
ClickTmp := Tmp;
end;
procedure KMSClcikEvent.onClick(v: JView); cdecl;
begin
ClickTmp;
end;
procedure test;
var
LayoutID, LayoutID1: Integer;
begin
LayoutID := TAndroidHelper.Activity.getResources.getIdentifier(
TAndroidHelper.StringToJString('edit_text'),
TAndroidHelper.StringToJString('layout'),
TAndroidHelper.Activity.getPackageName()
);
TAndroidHelper.Activity.setContentView(LayoutID); // 레이아웃 연결 고리
LayoutID1 := TAndroidHelper.Activity.getResources.getIdentifier(
TAndroidHelper.StringToJString('edit_text'),
TAndroidHelper.StringToJString('id'),
TAndroidHelper.Activity.getPackageName()
);
var lText: JEditText;
lText:= TJEditText.Wrap((TAndroidHelper.Activity.findViewById(LayoutID1) as ILocalObject).GetObjectID); // dEditText의 값 내용 가져오기 위해 오브젝트 id 입력
EdtClickEvent := KMSClcikEvent.Create(procedure
begin
ShowMessage('테스트중입니다');
end);
lText.setOnClickListener(EdtClickEvent);
end;
'FireMonkey 예제 자료' 카테고리의 다른 글
FireMonkey(파이어몽키) Live2D_android.jar sdk 활용한 live2d 실행 (0) | 2023.01.07 |
---|---|
안드로이드 FireMonkey TextView Floating 위젯 파스칼 언어 예제 (0) | 2022.06.26 |
FireMonkey 안드로이드 서비스 미디어 볼륨 최대 올려주기 (0) | 2022.04.02 |
FireMonkey 안드로이드 타 쓰레드 Toast 알림 사용하기(액티비티,서비스) 가능 (0) | 2022.04.01 |
FireMonkey 안드로이드 화면 켜짐 유지 (0) | 2022.03.20 |
파이어몽키(firemonkey) 코드로 화면 (세로,가로)전환 (0) | 2022.03.14 |
파이어몽키 안드로이드 EUC-KR Encode 인코딩 (0) | 2022.01.18 |
파이어몽키 안드로이드 지정된 폴더에 파일 목록 불러오기 (0) | 2022.01.18 |
댓글