Я пытаюсь создать вторичное действие из службы в моем приложении 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)?
Возможно, вы захотите использовать свойство Intent
, чтобы получить параметры, переданные в Activity
.
что-то типа:
int sampleData = Intent.GetIntExtra("SampleData", 0);
Где 0
будет значением по умолчанию, которое вы хотите для своего свойства, если значение не найдено в Intent.
Примечание. сохраненное состояние экземпляра используется для получения сохраненных значений из предыдущих состояний, если вы их сохранили.
Надеюсь это поможет.-
Именно то, что я искал! Кроме того, я никогда не знал, что Bundle из предыдущих состояний, но, глядя на имя параметра, это имеет смысл.