Пакет Xamarin Forms Android Activity Bundle имеет значение null

Я пытаюсь создать вторичное действие из службы в моем приложении Xamarin Forms для Android. Деятельность, кажется, начинается просто отлично. Но мне нужно передать ему некоторые данные, но параметр Bundle метода OnCreate всегда равен нулю.

Со страницы в моем проекте PCL вызывается служба:

protected override void OnAppearing()
{
    base.OnAppearing();

    ISampleService service = DependencyService.Get<ISampleService>();
    service.ProcessSampleData(6);
}

Сервис андроид:

[assembly: Dependency(typeof(SampleService))]

namespace ServiceActivityTester.Droid
{
    [Service]
    public class SampleService : ISampleService
    {
        public bool ProcessSampleData(int sampleData)
        {
            Context context = MainActivity.Instance;
            MainActivity activity = (MainActivity)context;

            Intent intent = new Intent(
                context, typeof(SampleActivity));
            intent.PutExtra("SampleData", sampleData);

            activity.StartActivityForResult(intent, 100);
            // context.StartActivity(intent);

            return true;
        }
    }
}

Второстепенная деятельность:

namespace ServiceActivityTester.Droid
{
    [Activity(Label = "SampleActivity")]
    public class SampleActivity
        : Activity
    {
        protected override void OnCreate(Bundle savedInstanceState)
        {
            // savedInstanceState == null always!
            base.OnCreate(savedInstanceState);

            int sampleData = savedInstanceState.GetInt("SampleData");
            System.Diagnostics.Debug.WriteLine(sampleData.ToString());
        }
    }
}

Мой файл манифеста такой же, как и при создании.

Как я могу получить данные Bundle, чтобы они не были нулевыми (таким образом, я могу получить данные putExtra SampleData)?

2
0
752
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Возможно, вы захотите использовать свойство Intent, чтобы получить параметры, переданные в Activity.

что-то типа:

int sampleData = Intent.GetIntExtra("SampleData", 0);

Где 0 будет значением по умолчанию, которое вы хотите для своего свойства, если значение не найдено в Intent.

Примечание. сохраненное состояние экземпляра используется для получения сохраненных значений из предыдущих состояний, если вы их сохранили.

Надеюсь это поможет.-

Именно то, что я искал! Кроме того, я никогда не знал, что Bundle из предыдущих состояний, но, глядя на имя параметра, это имеет смысл.

Jahmic 15.05.2019 06:20

Другие вопросы по теме