我正在尝试从Xamarin Forms Android应用中的服务创建辅助活动。该活动似乎开始就很好。我需要向其中传递一些数据,但是OnCreate方法参数Bundle始终为null。
在我的PCL项目中的一个页面上,该服务被调用:
protected override void OnAppearing()
{
base.OnAppearing();
ISampleService service = DependencyService.Get<ISampleService>();
service.ProcessSampleData(6);
}
android服务:
[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数据不为空(因此,我可以检索SampleData putExtra数据)?
答案 0 :(得分:1)
您可能想使用Intent
属性来获取传递给Activity
的参数。
类似:
int sampleData = Intent.GetIntExtra("SampleData", 0);
如果在Intent中找不到该值,0
将是您想要的属性默认值。
注意: savedInstanceState 用于从以前的状态中获取已保存的值(如果已保存的话)。
希望这会有所帮助。-