Xamarin Android - 更新来自其他活动

时间:2017-10-05 03:46:49

标签: c# android-activity xamarin.android android-notifications

我有一个带有TextView的片段“AddNewIncomeFragment”(“@ + id / lblAccountHead”)。点击textview后,它会启动一个新活动“AccountHeadListActivit”,显示现有账户头的列表。在从“AccountHeadListActivity”中选择帐户头时,我想更新具有所选帐户名的第一个活动的“lblAccountHead”,其他值必须完整。

之前我使用“消息中心”为xamarin表单做了。现在我试图在xamarin native(android)中做同样的事情。

*****应用第一个解决方案更新****

点击AddNewIncomeFragment中启动帐户头活动的事件:

  public void onAccounyHeadClick(object sender, EventArgs e)
        {
               var intend = new Intent(this.Activity, typeof(AccountHeadListActivity));
        //this.StartActivity(intend);
        this.StartActivityForResult(intend, 1000);
        }

帐户主管活动的ListView选择事件

void OnSelection (object sender, SelectedItemChangedEventArgs e)
        {

                     var result = new Intent();
        result.PutExtra("name", "Salary Account");
        result.PutExtra("id", 2);
        SetResult(Result.Ok, result);
       Finish();
        }

在关闭此活动时,我想要使用所选的帐户头名/ ID更新以前活动的文本视图。请分享我们在xamarin andriod中执行此操作的选项,应使用StartActivityForResult,Local Notifications或任何最佳方法。

我已经实施了上述解决方案并且工作正常。但问题是 - 第二个活动“AccountHeadList”包含一个添加新帐户链接,它启动一个新活动“AddNewAccount” - 现在如果用户创建一个新帐户并保存它,那么这个活动需要关闭,第一个活动需要新更新创建帐户名称。所以基本上“StartActivityForResult”在涉及三项活动并且需要更新第三项活动的第一项活动时失败 - 请建议。

谢谢,

@保罗

1 个答案:

答案 0 :(得分:4)

要收到结果,请致电 startActivityForResult()代替startActivity()

然后在第二个活动中,调用setResult(result)方法设置结果,然后在原始活动中完成活动finish()后,您可以覆盖方法

  @Override
  protected void onActivityResult(int requestCode, int resultCode, Intent     data) {
      // set the text view with the data from the result
  }