如何从另一个活动中清除一个活动的文本视图/编辑文本?

How do i clear textviews/edittexts from one activity in another activity?

提问人:Allan Veliz 提问时间:12/17/2022 最后编辑:Ken WhiteAllan Veliz 更新时间:12/17/2022 访问量:48

问:

我是 Xamarin 开发的新手,我有使用 C# 的 WinForms 和使用 Java 的 Android Studio 的“一些”背景。

情况是这样的,我已经完成了我的应用程序 99%。该应用程序由两个活动组成。在 Activity1 中,用户使用需要发送到 Activity2 的文本填充一些字段,因此用户可以通过填写更多文本字段来添加额外数据,一旦完成并将所有内容发送到数据库表,Activity2 将执行 Finish();然后让用户返回到 Activity1,我已经这样做了。

现在,我想要的是,当 Activity2 关闭并将用户发送回 Activity1 时,我希望清除 ACtivity1 中的所有文本字段,但前提是 Activity2 中的所有内容都已完成,因为我不想将 Activity1 的 NoHistory 设置为 true,以防用户需要返回并更正某些内容。

我尝试在 Activity1 中创建一个将这些文本字段设置为 null 的方法,它通过在同一活动中设置一个按钮来工作。我还尝试在 Activity2 中用以下命令调用它:

活动 1 活动 1 = 新 活动 1 活动.方法();

或者通过在 Activity2 中设置 textviews/edittexts,就像我在 Activity1 中所做的那样:

设置 {get; set;} 使用 FindViewbyId 调用 textview,然后: textview.text = “” (or = null)

我总是得到:未处理的异常:System.NullReferenceException:对象引用未设置为对象的实例。当应用在 Activity2 中执行时,在 Activity1 中尝试清除文本字段或将文本字段设置为 null 时,这两个选项。

有人可以向我解释如何从另一个活动中清除一个活动的所有文本视图吗?

在此之前,非常感谢您花时间阅读/帮助这个可怜的灵魂。

C# Xamarin Xamarin.Android NullReferenceException

评论

2赞 Maxim 12/17/2022
请提供您的代码。或者阅读有关 nullreferenceexception stackoverflow.com/questions/4660142/...
0赞 dbc 12/17/2022
你有没有机会编辑你的问题,包括重现问题的代码--即,一个最小的可重现的例子?否则,我们只能猜测您的问题可能是什么。请参阅如何提问
0赞 ToolmakerSteve 12/17/2022
你有标签,但你讨论的是 ,这是 。这个应用程序只有 Android 吗?如果它不使用任何UI类,那么请编辑问题,删除标签。谢谢。xamarin.formsActivityXamarin.AndroidXamarin.Formsxamarin.forms

答:

0赞 ToolmakerSteve 12/17/2022 #1

Activity2需要提供用于决定是否清除字段的信息。Activity1

原则是推迟在 Activity1 中进行更改,直到 Activity1 成为可见活动。也就是说,在返回 Activity1 之后。


鉴于您的问题中缺少代码,这里有一个简单的方法。在您的情况下,这可能不是最好的方法,但希望能为您提供一些指导。

如果是“单例”——永远不会有“同时两个不同的 Activity2”,那么使用 的静态成员是有效的:Activity2Activity2

class Activity1 : Activity
{
  protected void SomeMethodThatExecutesWhenActivityBecomesVisible()
  {
    if (Activity2.IsComplete)
    {
      .. // clear text fields
    }
  }
}

class Activity2 : Activity
{
  // IMPORTANT: "static".
  public static bool IsComplete;

  protected void SomeMethodThatExecutesWhenActivityBecomesVisible()
  {
    // Because `IsComplete` is static, be sure to clear it
    // each time Activity2 is used.
    IsComplete = false;
  }

  private void MyFinishMethod()
  {
    ... // logic that decides whether user "is done with Activity2" ...
    IsComplete = ... true or false as appropriate ...;
}

(我已经有一段时间没有使用 Xamarin.Android 代码了;为 .SomeMethodThatExecutesWhenActivityBecomesVisible