Android StartActivityForResult和Finish(带有视频)

Mat*_*ves 4 android xamarin.android

我有一个带有“添加项目”按钮和一个列表视图的MainActivity类,以及一个带有文本框和“保存”按钮的AddItemActivity类。用户应单击“添加项目”,转到AddItemActivity屏幕,输入一个项目,单击“保存”,然后返回到更新的MainActivity屏幕。

(顺便说一句,我正在使用MonoDroid,但我认为这不是MonoDroid特定的问题)。

我的“添加项目”点击事件(在主要活动中):

    private void addItemButton_Click(object sender, EventArgs e)
    {
        var intent = new Intent();
        intent.SetClassName(this, "monoApp.AddItemClassName");
        StartActivityForResult(intent, 0);
    }
Run Code Online (Sandbox Code Playgroud)

我的“保存”点击事件(添加项目活动时):

    private void saveButton_Click(object sender, EventArgs e)
    {
        var itemname = FindViewById<EditText>(Resource.id.itemName);

        _repo.SaveItem(new Item() {Name = itemname.Text.ToString()});

        Toast.MakeText(this, "You saved: " + itemname.Text, ToastLength.Short).Show();

        var intent = new Intent();
        SetResult(Result.Ok, intent);
        Finish();
    }
Run Code Online (Sandbox Code Playgroud)

然后回到主要活动:

    protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
    {
        base.OnActivityResult(requestCode, resultCode, data);

        RefreshTheList();
    }
Run Code Online (Sandbox Code Playgroud)

第一次,这就像一种魅力。屏幕滑到“添加项目”,然后在完成时滑回到主屏幕。在第二次,它滑过,但随后滑回自己,如果让任何意义。然后,如果我再次点击保存,它将恢复正常。

如果视频有帮助,我已将所见内容的片段发布到TwitVid:http ://www.twitvid.com/W7XZC

基本上,我不希望它“滑回自身”,所以我在做什么错?

DeR*_*gan 5

我在这里看不到您的代码中有什么问题...我在这里猜测。

您的第二个活动可能会在第二次尝试中从您剩余的代码部分多次启动。

在您的addItemButton_Click内部打印日志并进行检查。如果日志被打印两次,则它将以某种方式调用该方法两次。

  • 永远不要低估第二只眼睛的力量:)日志记录确实做到了–单击事件方法被触发了两次,因为我错误地将它绑定了两次。谢谢! (4认同)