首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Delphi中解析意图数据

如何在Delphi中解析意图数据
EN

Stack Overflow用户
提问于 2017-09-13 10:59:23
回答 1查看 599关注 0票数 0

我正在尝试从Intent中获取数据。它作为包含一个元素的Float数组传递。我试过这段代码,但它崩溃了:

代码语言:javascript
复制
procedure TMainScreen.BroadcastReceiver2Receive(Context: JContext; Intent: JIntent);
{$IFDEF ANDROID}
var
  Temp: String;
  Hr1: single;
  Bundle :Jbundle;
begin
  button2.Text:= 'triggered';
  if Intent.hasExtra(stringtojstring('DATA')) = true then
  begin
    bundle := intent.getExtras();
    button1.Text:= 'got data';
    hr1:= bundle.getFloatArray(stringtojstring('DATA'))[0];
    button2.Text:= floattostr(hr1);
  end;
{$ELSE}
begin
{$ENDIF}
end;

我肯定我没有正确地处理数组。我该怎么做呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-13 16:44:43

您应该使用JIntent.getFloatArrayExtra()而不是JIntent.getExtras()

但是,无论哪种方式,在访问数组元素之前,都需要检查返回的数组是否为nil。如果不是,则还应检查数组长度实际上是否大于0。

尝试更像这样的东西:

代码语言:javascript
复制
{$IFDEF ANDROID}
procedure TMainScreen.BroadcastReceiver2Receive(Context: JContext; Intent: JIntent);
var
  DataStr: JString;
  Arr: TJavaArray<Single>;
  Hr1: single;
begin
  Button2.Text := 'triggered';
  DataStr := StringToJString('DATA');
  if Intent.hasExtra(DataStr) then
  begin
    Button1.Text := 'got data';
    Arr := Intent.getFloatArrayExtra(DataStr);
    if (Arr <> nil) and (Arr.Length > 0) then
    begin
      Hr1 := Arr[0];
      Button2.Text := FloatToStr(Hr1);
    end else
      Button2.Text := 'no value';
  end;
end;
{$ENDIF}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46195752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档