Android StartActivityForResult和Finish(带视频)

时间:2010-10-31 17:14:47

标签: android xamarin.android

我有一个MainActivity类,其中包含一个“Add Item”按钮,一个listview和一个带有文本框和“save”按钮的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);
    }

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

    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();
    }

然后回到主要活动中:

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

        RefreshTheList();
    }

第一次就像魅力一样。屏幕滑动到“添加项目”,然后在完成后滑回主页面。 第二次,它会滑过,但随后会滑回本身,如果这有意义的话。然后,如果我再次点击 ,它会恢复正常工作。

如果视频会有所帮助,我已经发布了一个我正在看到的TwitVid剪辑:http://www.twitvid.com/W7XZC

基本上,我不希望它“永远地滑回自己”,所以我做错了什么?

1 个答案:

答案 0 :(得分:5)

我的代码中没有看到任何错误......我在这里猜测。

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

在addItemButton_Click中打印一个日志并检查。如果日志被打印两次,那么它会以某种方式调用该方法2次。