Hy,我的第一个Android应用程序根据用户提供的密钥生成一个数字,因此它有2个编辑框和一些代码。它正在我测试过的所有Android 4.x设备上工作,除了那个人的平板电脑我做了申请。它没有显示任何东西,只是一个黑屏。它是 Android 4.2 ,Cortex A7,1,2GHz QUAD Core平板电脑。
我在主窗口的“OnPaint”事件中放置了一个ShowMessage对话框并在运行时显示它,我点击“确定”,但屏幕保持黑色,大约一分钟左右如果我触摸“返回”我得到“应用程序没有响应”。在我的Android手机上,如果我运行我的应用程序,它会一直显示ShowMessage对话框,因为主窗口被重绘,但它运行正常。
如果我没有错误,我不知道如何找到问题。
我正在开发 Delphi XE5 Update 2 。谢谢,代码如下:
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
IdGlobal, IdHash, IdHashMessageDigest, FMX.Edit;
type
TMainWindow = class(TForm)
Label1Key: TLabel;
Key: TEdit;
numar: TEdit;
LabelNumber: TLabel;
PanelCentrare: TPanel;
procedure KeyChange(Sender: TObject);
procedure codChange(Sender: TObject);
procedure KeyTyping(Sender: TObject);
procedure MessagePaint(Sender: TObject; Canvas: TCanvas;
const ARect: TRectF);
private
{ Private declarations }
public
{ Public declarations }
end;
function MD5(S: String): String; overload;
var
MainWindow: TMainWindow;
implementation
{$R *.fmx}
function MD5(S: String): String;
begin
with TIdHashMessageDigest5.Create do
begin
Result := AnsiLowerCase(HashStringAsHex(S));
Free;
end;
end;
procedure TMainWindow.KeyChange(Sender: TObject);
var personalkey, md5string,ascii :string;
begin
personalkey := Uppercase(key.Text);
if length(personalkey) = 6 then
begin
md5string:= Uppercase(MD5(lowercase(personalkey)));
ascii := inttostr(ord(md5string[1]))+inttostr(ord(md5string[2]))+inttostr(ord(md5string[3]));
numar.Text := ascii;
end
end;
procedure TMainWindow.KeyTyping(Sender: TObject);
begin
key.MaxLength := 6;
end;
procedure TMainWindow.MessagePaint(Sender: TObject; Canvas: TCanvas;
const ARect: TRectF);
begin
//ShowMessage('Window Paint.');
end;
procedure TMainWindow.codChange(Sender: TObject);
var personalkey, md5string, ascii :string;
begin
personalkey := Uppercase(key.Text);
if length(personalkey) = 6 then
begin
md5string:= Uppercase(MD5(lowercase(personalkey)));
ascii := inttostr(ord(md5string[1]))+inttostr(ord(md5string[2]))+inttostr(ord(md5string[3]));
numar.Text := ascii;
end
end;
end.