【问题标题】:Xamarin.forms mixing ContentPage and Android ActivityXamarin.forms 混合 ContentPage 和 Android Activity
【发布时间】:2016-01-22 21:18:34
【问题描述】:

如何将两个页面混合在一起

我想做一些特定于平台 (Android) OnActivityResult 的事情,但我在 Xamarin.Forms 中使用 ContentPage

我如何在我的 .Droid 项目中知道 activity 是哪个?

假设我有一个名为CalendarPage : ContentPage 的页面。 我在我的 droid 项目中在哪里注册它,以便我可以在该 Activity(ContentPage) 中捕获ActivityResult

我不知道,因为我是 Xamarin.Forms 的新手并且正在学习它。

【问题讨论】:

  • Xamarin 表单在一项活动上运行(很可能是您的主要活动),因此一切都将在其中结束。
  • 请把它作为一个地方,所以我可以再次接受它,谢谢 m8 :)
  • 你能检查一下加载了活动的地方吗???
  • 搜索global::Xamarin.Forms.Forms.Init(this, bundle);,这就是活动。
  • 我现在举个例子。

标签: c# android xamarin xamarin.forms


【解决方案1】:

Xamarin 表单在一个活动上运行,这与您的主要活动最相似。

有两个示例项目向您展示如何在原生代码和表单代码部分之间进行通信,可以在此处找到

  1. https://github.com/xamarin/xamarin-forms-samples/tree/master/Forms2Native
  2. https://github.com/xamarin/xamarin-forms-samples/tree/master/Native2Forms

但是,要回答您的问题,您需要执行以下操作

 private const int MyRequestCode = 101;

 //Start activity for result
 var contactPickerIntent = new Intent(Intent.ActionPick, Android.Provider.ContactsContract.Contacts.ContentUri);
 context.StartActivityForResult(contactPickerIntent, MyRequestCode);

然后在您的主要活动中(初始化您的 xamarin 表单应用程序的活动(使用 global::Xamarin.Forms.Forms.Init(this, bundle);

protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
    if (requestCode == MyRequestCode && resultCode == Result.Ok)
    {
    }
}

【讨论】:

    猜你喜欢
    • 2017-03-04
    • 2017-11-25
    • 1970-01-01
    • 2019-10-16
    • 2018-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-19
    相关资源
    最近更新 更多