Xamarin Android将MainActivity传递给AlertDialog

时间:2015-08-31 15:31:04

标签: android xamarin alertdialog

我试图通过在另一个类中分离它的代码并在代码中根据需要调用该类来实现AlertDialog。

以下是我的AlertDialog

的方法
 using Android.App;
 using Android.Content;
 using Android.OS;
 using Android.Runtime;
 using Android.Views;
 using Android.Widget;


namespace NAndroid
{
   public class AlertViewController: Activity
   {
       public AlertViewController ()
       {
       }

        public void ShowAlertBox (string titleTxt, string messageTxt)
        {

           AlertDialog.Builder builder = new AlertDialog.Builder(this);
           builder.SetTitle(titleTxt);
           builder.SetMessage(messageTxt);
           builder.SetCancelable(false);
           builder.SetPositiveButton("OK", delegate { Finish(); });
           RunOnUiThread (() => {
            builder.Show();
           } );
       }
     }
  }

从其他课程中调用

AlertViewController alertView = new AlertViewController ();
alertView.ShowAlertBox ("Test", "Test");

它正在崩溃。它抛出空指针异常

 AlertDialog.Builder builder = new AlertDialog.Builder(this);

1 个答案:

答案 0 :(得分:0)

public class AlertViewController: Activity

AlertViewController扩展Activity ...因此你的AlertViewController充当一个活动,所以它应该在清单中注册,它也应该使用intent启动...稍后使用theme将其转换为对话框......或者

One Solution只需创建一个简单的类

public class AlertViewController

在Constructor中传递活动上下文

AlertViewController alertView = new AlertViewController (YourActivity.this);
alertView.ShowAlertBox ("Test", "Test");

另一个解决方案扩展Dialog类并创建自定义对话框

public class AlertViewController : Dialog

或者您也可以使用对话框片段...有关详情,请查看http://javatechig.com/xamarin/alertdialog-and-dialogfragment-example-in-xamarin-android