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

nukf8bse  于 2022-12-20  发布在  其他
关注(0)|答案(1)|浏览(116)

我是Xamarin开发的新手,我有一些使用C#的WinForms和使用Java的Android Studio的背景知识。
情况是这样的,我的应用已经完成了99%。该应用由两个Activity组成。在Activity1中,用户使用需要发送到Activity2的文本填充一些字段,以便用户可以通过填充更多文本字段来添加额外数据。一旦完成,所有内容都发送到数据库表,Activity2执行Finish();然后让用户返回到我已经完成的练习1。
现在,我希望在Activity2关闭且用户返回到Activity1时,清除Activity1中的所有文本字段,但仅当Activity2中的所有内容都已完成时,因为我不希望将Activity1的NoHistory设置为true,以防用户需要返回并更正某些内容。
我尝试过在Activity1中创建一个方法,将这些文本字段设置为空,它通过在同一个Activity中设置一个按钮来工作。我还尝试过在Activity2中使用以下命令调用它:

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

或者像我在练习1中所做的那样,在练习2中设置文本视图/编辑文本:

    • 设置一个{get; set ;}使用FindViewbyId调用文本视图然后:文本视图。文本=""(或=空)**

我总是得到:* * 未处理的异常:System.NullReferenceException:对象引用未设置为对象的示例**。在Activity2中执行应用时,如果应用尝试清除Activity1中的文本字段或将其设置为空,则适用于这两个选项。
有人能给我解释一下如何在一个活动中清除另一个活动中的所有文本视图吗?
prebefore非常感谢你花时间阅读/帮助这个可怜的灵魂。

kupeojn6

kupeojn61#

Activity2需要提供Activity1用来决定是否清除字段的信息。
原则是推迟在活动1中进行更改,直到活动1成为可见活动。也就是说,在返回活动1之后。
鉴于你的问题缺乏代码,这里有一个简单的方法。它可能不是最好的方法,但它希望能给你一些指导。
如果Activity2是一个“单例”--永远不存在“同时有两个不同的Activity 2”,那么使用Activity2的一个static成员是有效的:

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输入适当的方法名。)

相关问题