2010-10-31 78 views
3

我有一個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

基本上,我不希望它「滑回自己」永遠,所以我是什麼做錯了?

回答

4

我在這裏看不到你的代碼有什麼問題......我在這裏猜測。

您的第二項活動可能會在第二次嘗試中多次從代碼的其餘部分以某種方式啓動。

在addItemButton_Click內打印日誌並檢查。如果日誌打印兩次,那麼它會以某種方式調用該方法2次。

+1

永遠不要低估第二組眼睛的力量:)記錄做到了 - 點擊事件方法被解僱了兩次,因爲我錯誤地綁定了它兩次。謝謝! – 2010-10-31 20:53:15