Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Xamarin如何从android项目打开Xamarin表单页面?_C#_Xamarin_Xamarin.android_Xamarin.forms_Android Toolbar - Fatal编程技术网

C# Xamarin如何从android项目打开Xamarin表单页面?

C# Xamarin如何从android项目打开Xamarin表单页面?,c#,xamarin,xamarin.android,xamarin.forms,android-toolbar,C#,Xamarin,Xamarin.android,Xamarin.forms,Android Toolbar,我想从XamarinAndroid项目中打开Xamarin表单页面。在android项目上,我创建了toolabar项目图像,在这里我调用事件来打开Xamarin表单项目的页面 以下是我的MainActivity.cs toolabar映像项实现: public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsApplicationActivity { private IMenu Cur

我想从XamarinAndroid项目中打开Xamarin表单页面。在android项目上,我创建了toolabar项目图像,在这里我调用事件来打开Xamarin表单项目的页面

以下是我的MainActivity.cs toolabar映像项实现:

    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsApplicationActivity
    {
      private IMenu CurrentMenu { get; set; }
      private ImageView imgSmallC { get; set; }

      public override bool OnCreateOptionsMenu(IMenu menu)
            {
               ActionBar.DisplayOptions = ActionBarDisplayOptions.HomeAsUp | ActionBarDisplayOptions.ShowCustom | ActionBarDisplayOptions.ShowTitle | ActionBarDisplayOptions.ShowHome;  
                LayoutInflater inflater = (LayoutInflater)ActionBar.ThemedContext.GetSystemService(LayoutInflaterService);
                View customActionBarView = inflater.Inflate(Resource.Layout.actionbar_custom_view_done, null);  

                imgSmallC = (ImageView)customActionBarView.FindViewById<ImageView>(Resource.Id.ImgSmallC);

                imgSmallC.Click += (object sender, EventArgs args) =>
                {
                    StartActivity(typeof(MyPopupPage));
                };
                return base.OnCreateOptionsMenu(menu);
            }
}
public class main活动:全局::Xamarin.Forms.Platform.Android.Forms应用活动
{
私有IMenu当前菜单{get;set;}
私有ImageView imgSmallC{get;set;}
公共覆盖布尔onCreateOptions菜单(IMenu菜单)
{
ActionBar.DisplayOptions=ActionBarDisplayOptions.HomeAsUp | ActionBarDisplayOptions.ShowCustom | ActionBarDisplayOptions.ShowTitle | ActionBarDisplayOptions.ShowHome;
LayoutInflater充气器=(LayoutInflater)ActionBar.ThemedContext.GetSystemService(LayoutInflaterService);
View customActionBarView=充气机.充气(Resource.Layout.actionbar\u custom\u View\u done,null);
imgSmallC=(ImageView)customActionBarView.FindViewById(Resource.Id.imgSmallC);
imgSmallC.单击+=(对象发送者,事件参数)=>
{
StartActivity(typeof(MyPopupPage));
};
返回base.onCreateOptions菜单(菜单);
}
}
在StartActivity中,我从Xamarin表单项目调用MyPoupPage.xaml页面,但不幸的是,当我调试项目并单击工具栏图像时,我遇到了这样一个错误:

System.ArgumentException:类型参数名称:类型未派生 来自java类型


您不能将基于
页面的
Xamarin.Form
用作Android
活动
,它们是两个完全不同的东西

您可以从
Xamarin.Android
项目访问
Xamarin.Forms
应用程序
单例,并将其用于
pushmodelsync
PushAsync

示例(使用完整命名空间): 基于
依赖关系服务的示例:
界面:

using System;
namespace PushPageFromNative
{
    public interface IShowForm
    {
        void PushPage();
    }
}
var pushFormBtn = new Button
{
    Text = "Push Form",
    VerticalOptions = LayoutOptions.CenterAndExpand,
    HorizontalOptions = LayoutOptions.CenterAndExpand,
};
pushFormBtn.Clicked += (sender, e) =>
{
        DependencyService.Get<IShowForm>().PushPage();
};
async public void PushPage()
{
    // Do some Android specific things... and then push a new Forms' Page
    await Xamarin.Forms.Application.Current.MainPage.Navigation.PushModalAsync(new PushPageFromNative.MyPage());
}
Xamarin.Form
基于代码:

using System;
namespace PushPageFromNative
{
    public interface IShowForm
    {
        void PushPage();
    }
}
var pushFormBtn = new Button
{
    Text = "Push Form",
    VerticalOptions = LayoutOptions.CenterAndExpand,
    HorizontalOptions = LayoutOptions.CenterAndExpand,
};
pushFormBtn.Clicked += (sender, e) =>
{
        DependencyService.Get<IShowForm>().PushPage();
};
async public void PushPage()
{
    // Do some Android specific things... and then push a new Forms' Page
    await Xamarin.Forms.Application.Current.MainPage.Navigation.PushModalAsync(new PushPageFromNative.MyPage());
}

我想从android活动中打开Xamarin Froms页面,而不是单击任何按钮。那么“Xamarin.Forms-Based Code”应该在哪里编写呢?很好用,谢谢。还有一个问题是,它是在没有导航栏的情况下打开的,所以可以用导航栏打开内容页吗?很好。表单视图上的单个元素(例如文本标签)是否有类似的情况?@Ggler,不确定您的意思是什么?你想做什么?谢谢,你在这里的回答()成功了。你能分享一下你想出的解决方案吗?我的问题有点类似