Как избежать выполнения метода OnCreate, когда действие было открыто ранее (Xamarin. Android)? - PullRequest
0 голосов
/ 24 марта 2020

У меня есть два вида деятельности FirstActivity и SecondActivity. Когда я нахожусь в FirstActivty, я называю SecondActivity так:

var secondActivity = new Intent(this, typeof(SecondActivity));
secondActivity.PutExtra("someExtra", someExtra);
StartActivity(secondActivity);
Finish();

В SecondActivity Я вызываю FirstActivity в OnBackPressed метод:

public override void OnBackPressed()
{
    StartActivity(typeof(FirstActivty));
    Finish();
}

Я посмотрел ответы на этот вопрос для Android(Java). Ответы были таковы: чтобы избежать выполнения метода OnCreate в FirstActivity, когда действие уже создано, мне не нужно уничтожать FirstActivity после того, как я открою SecondActivity, я должен удалить Finish() после StartActivity(secondActivity); строки. Я удалил его, но метод OnCreate все еще выполняется, когда я go вернулся с SecondActivity. Работает ли это решение только в Android(Java), и если да, то каково решение для Xamarin.Android?

1 Ответ

1 голос
/ 25 марта 2020

Вы можете добавить LaunchMode = Android.Content.PM.LaunchMode.SingleInstance в свой атрибут FirstActivity, как этот код.

   [Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true,LaunchMode = Android.Content.PM.LaunchMode.SingleInstance)]
    public class MainActivity : AppCompatActivity
    {

        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            Xamarin.Essentials.Platform.Init(this, savedInstanceState);
            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.activity_main);

        }

Здесь выполняется GIF.

enter image description here

Если вы не хотите выполнять код в методе Oncreate, вы можете обратиться к этой теме. { ссылка }

...