Android StartActivityForresult and Finish(ビデオ付き)
-
27-09-2019 - |
質問
「アイテムの追加」ボタンとリストビュー、およびテキストボックスと「保存」ボタンを備えたadditemactivityクラスを備えたMainActivityクラスがあります。ユーザーは「アイテムの追加」をクリックし、additemactivity画面に移動し、アイテムを入力し、[保存]をクリックしてから、更新された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();
}
これは初めて魅力のように機能します。画面はスライドして「アイテムを追加」し、その後、メインが完了したらメインに戻ります。 2回目, 、それはスライドしますが、それからスライドします 自体, 、それが理にかなっている場合。そして、私が保存した場合 また, 、それは正常に動作することに戻ります。
ビデオが役立つなら、私はTwitvidに見たもののクリップを投稿しました: http://www.twitvid.com/w7xzc
基本的に、私はそれがこれまでに「それ自体に戻って戻って」したくないので、私は何が間違っているのですか?
解決
私はここであなたのコードに何も悪いことを見ていません...私はここで推測しています。
2番目のアクティビティは、コードの残りの部分から何らかの形で2回目の試行で複数回起動される可能性があります。
addItembutton_click内にログを印刷して確認します。ログが2回印刷されている場合、メソッドはどういうわけか2回呼び出します。