代码之家  ›  专栏  ›  技术社区  ›  Matthew Groves

Android StartActivityForResult和Finish(带视频)

  •  4
  • Matthew Groves  · 技术社区  · 14 年前

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

    (顺便说一句,我使用的是单机器人,但我不认为这是一个单机器人特有的问题)。

    我的“添加项目”单击事件(在主活动上):

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

    这是第一次,就像一个魅力。屏幕滑到“添加项目”,完成后滑回主屏幕。这个 第二次 ,它滑过去,但随后又滑回 它本身 如果有任何意义的话。然后如果我按save 再一次 恢复正常工作。

    如果视频有帮助的话,我会把我看到的视频发到twitvid: http://www.twitvid.com/W7XZC

    基本上,我不希望它“滑回原处”,所以我做错了什么?

    1 回复  |  直到 14 年前
        1
  •  5
  •   DeRagan    14 年前

    我在这里看不出你的代码有什么问题……我在这里猜猜。

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

    在Additem中打印日志按钮\单击并检查。如果日志被打印两次,那么它会以某种方式调用方法2次。