我知道我可以从Native Android Activity启动Xamarin Forms页面,但是如何从Xamarin Forms ContentPage启动Native Android Activity。我尝试使用DependencyService但没有成功。
答案 0 :(得分:4)
我明白了。
首先,我需要在Xamarin项目中创建这样的接口
public interface IRecordVideoPage
{
void StartNativeIntentOrActivity();
}
然后我使用依赖服务从我的Xamarin表单内容页面启动了原生Android活动,如下所示:
DependencyService.Register<IRecordVideoPage>();
DependencyService.Get<IRecordVideoPage>().StartNativeIntentOrActivity();
接下来,我在Android项目中创建了一个RecordActivity类,用于加载测试活动
[assembly: Xamarin.Forms.Dependency(typeof(RecordActivity))]
namespace StreamTest.Droid
{
[Activity(Label = "RecordActivity")]
public class RecordActivity : IRecordVideoPage
{
public void StartNativeIntentOrActivity()
{
var intent = new Intent(Forms.Context, typeof(Test));
Forms.Context.StartActivity(intent);
}
}
最后我在Test类中设置了内容视图:
public class Test : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
public Test() { }
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.Record);
}
}
}
答案 1 :(得分:1)
DependencyService是您的最佳选择。 PCL(便携式类库)背后的概念正是平台独立的。 如果您通过依赖服务显示错误,我们可以提供帮助