C# 碎片内部膨胀布局

C# 碎片内部膨胀布局,c#,android-fragments,xamarin.android,C#,Android Fragments,Xamarin.android,我有个问题。我使用FrameLayout来使用片段。现在,在我的一个片段中,我想创建一个带有EditText的对话框。因此,我为fragment.cs编写了以下代码: public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.Inflate(Resource.Layout.intro_ad

我有个问题。我使用FrameLayout来使用片段。现在,在我的一个片段中,我想创建一个带有EditText的对话框。因此,我为fragment.cs编写了以下代码:

public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
    View view = inflater.Inflate(Resource.Layout.intro_add_new_project, container, false);

    ImageButton btnAddProject = view.FindViewById<ImageButton>(Resource.Id.btnAddProject);
    btnAddProject.Click += delegate
    {
        LayoutInflater layoutinflater = LayoutInflater.From(this);
        View DialogView = layoutinflater.Inflate(Resource.Layout.setup_project_name_dialog, null);
        Android.Support.V7.App.AlertDialog.Builder ProjectNameDialog = new Android.Support.V7.App.AlertDialog.Builder(this);
        ProjectNameDialog.SetView(DialogView);

        EditText editProjectName = DialogView.FindViewById<EditText>(Resource.Id.editProjectName);
        ProjectNameDialog.SetCancelable(false);
        ProjectNameDialog.SetPositiveButton("Continue", delegate
        {
            //My own code here
        });
    };


    return view;
}
public override视图OnCreateView(布局、充气机、视图组容器、Bundle savedInstanceState)
{
视图=充气器.充气(Resource.Layout.intro\u add\u new\u项目,容器,false);
ImageButton btnAddProject=view.FindViewById(Resource.Id.btnAddProject);
btnAddProject.单击+=委派
{
LayoutInflater LayoutInflater=LayoutInflater.From(this);
查看对话框View=LayoutFlater.Inflate(Resource.Layout.setup\u project\u name\u对话框,空);
Android.Support.V7.App.AlertDialog.Builder ProjectNameDialog=新的Android.Support.V7.App.AlertDialog.Builder(此);
ProjectNameDialog.SetView(DialogView);
EditText editProjectName=DialogView.FindViewById(Resource.Id.editProjectName);
ProjectNameDialog.SetCancelable(false);
ProjectNameDialog.SetPositiveButton(“继续”,委托
{
//我自己的代码在这里
});
};
返回视图;
}
现在,我对2x
这个
有一个问题。它给出了以下错误:

无法将“Appname.Fragments.Intro\u Add\u Project”转换为 'Android.Content.Context'

我应该填写什么而不是
这个
。别忘了。。。。它是一个碎片

有人能帮我吗

更新

我得到的错误是:

{Java.Lang.IllegalStateException:您需要使用Theme.AppCompat 此活动的主题(或后代)。在 Java.Interop.JniEnvironment+InstanceMethods.CallObjectMethod (Java.Interop.JniObjectReference实例,Java.Interop.JniMethodInfo 方法,Java.Interop.JniArgumentValue*args)[0x00069]in :0 at Java.Interop.jnipermembers+JniInstanceMethods.invokeVirtualObject方法 (System.String encodedMember,Java.Interop.IJavaPeerable self, 中的Java.Interop.JniArgumentValue*参数)[0x0002a] :0 at 中的Android.Support.V7.App.AlertDialog+Builder.Show()[0x0000a] :0 at Appname.Fragments.Intro_Add_Project.b__1_0 (System.Object,System.EventArgs)[0x0005b]中的 C:\Users\Alexander\source\repos\Appname\Appname\Fragments\Intro\u Add\u Project.cs:45 ---托管Java.Lang.IllegalStateException堆栈跟踪的结束---Java.Lang.IllegalStateException:您需要使用一个Theme.AppCompat 此活动的主题(或后代)。在 appcompatidelegateimplv9.createSubDecor(appcompatidelegateimplv9.java:354) 在 android.support.v7.app.AppCompateDelegateImplV9.ensureSubDecor(AppCompateDelegateImplV9.java:323) 在 android.support.v7.app.AppCompateDelegateImplV9.setContentView(AppCompateDelegateImplV9.java:284) 在 android.support.v7.app.AppCompatDialog.setContentView(AppCompatDialog.java:83) 在 android.support.v7.app.AlertController.installContent(AlertController.java:226) 位于android.support.v7.app.AlertDialog.onCreate(AlertDialog.java:260) 在android.app.Dialog.dispatchOnCreate(Dialog.java:407)上 android.app.Dialog.show(Dialog.java:302)位于 android.support.v7.app.AlertDialog$Builder.show(AlertDialog.java:958) 在mono.android.view.view\u OnClickListenerImplementor.n\u onClick(本机 方法)在 mono.android.view.view\uOnClickListenerImplementor.onClick(view\uOnClickListenerImplementor.java:30) 在android.view.view.performClick(view.java:6669)中 android.view.view.performClickInternal(view.java:6638)位于 android.view.view.access$3100(view.java:789) 查看$PerformClick.run(view.java:26145) handleCallback(Handler.java:873)位于 dispatchMessage(Handler.java:99)位于 Looper.loop(Looper.java:193)位于 main(ActivityThread.java:6863)位于 java.lang.reflect.Method.invoke(本机方法)位于 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:537) 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)}

根据,LayoutInflater.From方法需要一个Android.Content.Context对象。因此,假设您的片段是从Android.App.fragment继承的,这与您的片段有关,而不是您的应用程序上下文

LayoutInflater layoutinflater = LayoutInflater.From(this);

您应该使用
LayoutInflater LayoutInflater=LayoutInflater.From(活动)

Android.Support.V7.App.AlertDialog.Builder项目名称对话框=新的Android.Support.V7.App.AlertDialog.Builder(活动)

这是我的片段代码。(不要忘记添加
projectnamedilog.Show();
弹出AlertDialog)

有正在运行的GIF


我不知道Xamarin,但错误消息似乎与View=inflater.Inflate(Resource.Layout.intro\u add\u new\u project,container,false)行有关。似乎充气机.Inflate方法需要一个Android.Content.Context对象。不,错误发生在
(this)
单词
this
的两行,你想让我回答这个问题还是解决了?还没有解决,我问题的最后一部分是我尝试Leon LuThank You的解决方案时遇到的错误,但我仍然在这一行中得到一个错误:
projectnamedilog.Show()。。。。我将错误添加到问题的更新部分!你可以分享一个演示吗?@a.Vreeswijk这是我的演示,你可以参考它。你是否使用了
Theme.AppCompat主题(或后代)
与此链接类似的活动我现在没有使用Theme.AppCompat,但我如何将其与actionbar一起使用?我已经尝试过:
Theme.AppCompat.Light.darkaActionBar
,但在我的代码中我使用了:
ActionBar.SetCustomView(Resource.Layout.setup\u nav\u bar)现在它给出了一个错误。。。。我做错了什么?
     public class Fragment1 : Fragment
{
    public override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);

        // Create your fragment here
    }

    public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        View view = inflater.Inflate(Resource.Layout.activity_main, container, false);

        ImageButton btnAddProject = view.FindViewById<ImageButton>(Resource.Id.btnAddProject);
        btnAddProject.Click += delegate
        {
            LayoutInflater layoutinflater = LayoutInflater.From(Activity);
            View DialogView = layoutinflater.Inflate(Resource.Layout.setup_project_name_dialog, null);
            Android.Support.V7.App.AlertDialog.Builder ProjectNameDialog = new Android.Support.V7.App.AlertDialog.Builder(Activity);
            ProjectNameDialog.SetView(DialogView);

            EditText editProjectName = DialogView.FindViewById<EditText>(Resource.Id.et_name);
            ProjectNameDialog.SetCancelable(false);
            ProjectNameDialog.SetPositiveButton("Continue", delegate
            {
                //My own code here
            });

            ProjectNameDialog.Show();
        };
        return view;
    }
}
    [Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true)]
public class MainActivity : AppCompatActivity
{

    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        SetContentView(Resource.Layout.main);
       var Fragment1 = new Fragment1();
       FragmentManager.BeginTransaction()
                    .Add(Android.Resource.Id.Content, Fragment1)
                    .Commit();
    }


}