【发布时间】:2019-05-09 21:30:02
【问题描述】:
我有问题。我正在使用 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;
}
现在我遇到了 2x this 的问题。它给出了以下错误:
无法从“Appname.Fragments.Intro_Add_Project”转换为 'Android.Content.Context'
我应该填写什么而不是this。别忘了....这是一个片段!
有人可以帮我吗?
更新
我得到的错误是:
{Java.Lang.IllegalStateException: 你需要使用 Theme.AppCompat 此活动的主题(或后代)。在 Java.Interop.JniEnvironment+InstanceMethods.CallObjectMethod (Java.Interop.JniObjectReference 实例,Java.Interop.JniMethodInfo 方法,Java.Interop.JniArgumentValue* args) [0x00069] in :0 在 Java.Interop.JniPeerMembers+JniInstanceMethods.InvokeVirtualObjectMethod (System.String 编码成员,Java.Interop.IJavaPeerable 自我, Java.Interop.JniArgumentValue* 参数)[0x0002a] 在 :0 在 Android.Support.V7.App.AlertDialog+Builder.Show() [0x0000a] in :0 在 Appname.Fragments.Intro_Add_Project.b__1_0 (System.Object , System.EventArgs) [0x0005b] 在 C:\Users\Alexander\source\repos\Appname\Appname\Fragments\Intro_Add_Project.cs:45 --- 托管 Java.Lang.IllegalStateException 堆栈跟踪结束 --- java.lang.IllegalStateException:您需要使用 Theme.AppCompat 此活动的主题(或后代)。在 android.support.v7.app.AppCompatDelegateImplV9.createSubDecor(AppCompatDelegateImplV9.java:354) 在 android.support.v7.app.AppCompatDelegateImplV9.ensureSubDecor(AppCompatDelegateImplV9.java:323) 在 android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.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_OnClickListenerImplementor.n_onClick(Native 方法)在 mono.android.view.View_OnClickListenerImplementor.onClick(View_OnClickListenerImplementor.java:30) 在 android.view.View.performClick(View.java:6669) 在 android.view.View.performClickInternal(View.java:6638) 在 android.view.View.access$3100(View.java:789) 在 android.view.View$PerformClick.run(View.java:26145) 在 android.os.Handler.handleCallback(Handler.java:873) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在 android.os.Looper.loop(Looper.java:193) 在 android.app.ActivityThread.main(ActivityThread.java:6863) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:537) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) }
【问题讨论】:
-
我不知道 Xamarin,但错误消息似乎与 View view = inflater.Inflate(Resource.Layout.intro_add_new_project, container, false) 行有关。似乎 inflater.Inflate 方法需要一个 Android.Content.Context 对象。
-
不,错误出现在
(this)字词this的 2 行处 -
你要我回答这个问题还是解决了?
-
还没解决,我的问题的最后一部分是我尝试Leon Lu的解决方案时遇到的错误
标签: c# android-fragments xamarin.android