Android的StartActivityForResult和完成(带视频)

问题描述:

我有一个MainActivity类与一个“添加项目”按钮和一个列表视图和一个AddItemActivity类与一个文本框和一个“保存”按钮。用户应该点击“Add Item”,进入AddItemActivity屏幕,输入一个项目,点击'save',然后返回到更新的MainActivity屏幕。Android的StartActivityForResult和完成(带视频)

(顺便说一句,我使用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

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

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

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

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

+1

永远不要低估第二组眼睛的力量:)记录做到了 - 点击事件方法被解雇了两次,因为我错误地绑定了它两次。谢谢! – 2010-10-31 20:53:15