Android StartActivityForResult и Finish (с видео) - PullRequest
4 голосов
/ 31 октября 2010

У меня есть класс 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);
    }

Мое событие клика «Сохранить» (при добавлении элемента деятельности):

    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 Ответ

5 голосов
/ 31 октября 2010

Я не вижу ничего плохого в вашем коде здесь ... Я предполагаю здесь.

Ваше Второе действие может запускаться несколько раз во второй попытке каким-либо образом из оставшихся частей кода.

Распечатайте журнал внутри вашего addItemButton_Click и проверьте. Если журнал печатается дважды, он как-то вызывает метод 2 раза.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...