当前位置: 首页 > 知识库问答 >
问题:

Xamarin将数据从动态创建的按钮传递到活动

阎京
2023-03-14
foreach (Tasks item in table)
{
    TableRow row = new TableRow(this);
    TextView txtTask = new TextView(this);
    txtTask.Text = item.Name;
    row.AddView(txtTask);
    tableLayout.AddView(row);
    row = new TableRow(this);
    Button btnEdit = new Button(this);
    btnEdit.Text = "Edit Record";
    btnEdit.SetWidth(300);
    btnEdit.Click += delegate 
    {
        Intent viewTask = new Intent(this, typeof(UpdateTaskActivity));
        viewTask.PutExtra("TaskId", item.Id);
        StartActivity(viewTask);
    };
    row.AddView(btnEdit);

    tableLayout.AddView(row);
}

在UpdateTaskActivity的OnCreate方法中,我有:

string test = Intent.GetStringExtra("TaskId") ?? "error";
if (test != "error")
{
    //Do Stuff
}

但是当我放下一个断点时,我的字符串总是为NULL。我确实放了一个断点,以确保拉出的是正确的ID。

为什么这与内置按钮工作,但不与我的动态按钮工作?

//Test button
Button btnTest = FindViewById<Button>(Resource.Id.btnTest);
btnTest.Click += delegate 
{
    var activity2 = new Intent(this, typeof(UpdateTaskActivity));
    activity2.PutExtra("TaskId", "1");
    StartActivity(activity2);
};

共有1个答案

齐兴运
2023-03-14

主要问题是您正在向额外内容添加int:

// item.Id is an int type
viewTask.PutExtra("TaskId", item.Id);

然后尝试将其作为字符串:

var test = Intent.GetStringExtra("TaskId");

有两种方法可以获取值,而不必将值作为字符串添加。要么获取int值:

var test = Intent.GetIntExtra("TaskId", 0);
if (test != 0)
{
    // Do Stuff
}
if (Intent.HasExtra("TaskId"))
{
    var test = Intent.GetIntExtra("TaskId", 0);
    // Do Stuff
}
 类似资料:
  • 我尝试使用 如有任何帮助,不胜感激,谢谢。

  • 我想问一下如何将值从片段a传递到活动B,然后再传递回片段。我尝试使用bundle来传递值,但是它会给出错误的数据。 非常感谢。

  • 问题内容: 我需要在单击recyclerview的图像时将数据从传递 到 。有人可以帮忙吗? 问题答案: 创建一个侦听器接口,然后让您的MainActivity实现它。这样,您可以在onClick方法中调用回调方法。 接口: 主要活动: 您的VideoAdapter:

  • 如何将数据从活动传递到对话框? 有关更多详细信息,请参阅下图:

  • 我想知道当我的活动被传递一个字符串和图标时,如何自动创建一个按钮。我有一个活动是监听端口从计算机接收字符串和图像。一旦这个图像和字符串被传递到我的应用程序,我希望我的应用程序自动创建一个按钮使用该图像作为背景和字符串作为标签下的图像。 我想知道是否有人能告诉我如何开始,因为我甚至不确定如何开始这一点,并在网上找到解决方案。 我也想知道如何在我的GUI上的特定位置定位新按钮。我希望新按钮显示在我的G