我有一个带有 TextView("@+id/lblAccountHead") 的片段“AddNewIncomeFragment”。单击 TextView 时,它会启动一个新 Activity “AccountHeadListActivit”,其中显示现有帐户头的列表。从“AccountHeadListActivity”中选择帐户头时,我想使用所选帐户名称更新第一个 Activity 的“lblAccountHead”,其他值需要保持不变。
之前我使用 xamarin 形式的“消息中心”来完成此操作。现在我尝试在 xamarin native (android)中做同样的事情。
*****更新了应用的第一个解决方案****
AddNewIncomeFragment 中的点击事件启动帐户头 Activity :
public void onAccounyHeadClick(object sender, EventArgs e)
{
var intend = new Intent(this.Activity, typeof(AccountHeadListActivity));
//this.StartActivity(intend);
this.StartActivityForResult(intend, 1000);
}
帐户头 Activity 的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();
}
关闭此 Activity 时,我想使用选定的帐户负责人名称/ID 更新先前 Activity 的 TextView 。请分享我们在 xamarin andriod 中必须执行此操作的选项,应该使用 StartActivityForResult、本地通知或任何最佳方法。
我已经实现了上述解决方案,并且运行良好。但问题是 - 第二个 Activity “AccountHeadList”包含一个添加新帐户链接,该链接启动新 Activity “AddNewAccount” - 现在,如果用户创建一个新帐户并保存它,则需要关闭此 Activity ,并且需要用新的内容更新第一个 Activity 创建的帐户名。因此,基本上“StartActivityForResult”在涉及三个 Activity 时失败,并且需要从第三个 Activity 更新第一个 Activity - 请提出建议。
谢谢
@保罗
最佳答案
要接收结果,请调用
startActivityForResult()
而不是 startActivity()
然后在您的第二个 Activity 中,在完成 Activity finish()
之前调用 setResult(result)
方法来设置结果,然后在您的原始 Activity 中您可以重写方法
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// set the text view with the data from the result
}
关于c# - Xamarin Android - 从另一个 Activity 更新一个 Activity 的 UI 控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46577529/