2013-04-05 59 views
2

我想使用AlertDialog.Builder,一个自定义视图和一个计时器来创建启动屏幕。无法使用计时器,自定义视图和Xamarin关闭AlertDialog

我正在使用Xamarin.Android - 我没有'解雇'的方法似乎,我可以调用'处置',但alertDialog视图不关闭。

如下代码示例:

public class SplashDialog 
{ 
    private readonly AlertDialog.Builder _alert; 
    private readonly View _view; 


    public SplashDialog(Context context) 
    { 
     _alert = new AlertDialog.Builder(context); 

     var layoutInflater = (LayoutInflater)context.GetSystemService(Context.LayoutInflaterService); 
     _view = layoutInflater.Inflate(Resource.Layout.splash, null); 
     _alert.SetView(_view); 

    } 

    public void Show() 
    { 
     _alert.Show(); 

     /* 
     new Thread(() => 
     { 
      Thread.Sleep(3000); 
      _view.Dispose(); 
      _alert.Dispose(); 

     }).Start(); 
     * */ 

     new Handler().PostDelayed(() => 
      { 
       _view.Dispose(); 
       _alert.Dispose(); 

      }, 3000); 
    } 
} 

回答

7

这是事实AlertDialog.Builder没有一个Dismiss()方法,但是当你调用_alert.Show(),它返回它具有Dismiss()方法的AlertDialog实例。你只需要将实例保存在某个地方,并在需要时调用它,就像这样。

private AlertDialog _dialog; 

public void Dismiss() 
{ 
    _dialog.Dismiss(); 
} 
+0

亚伦是对的。但是你真的应该使用DialogFragment(http://developer.android.com/reference/android/app/DialogFragment.html)来显示诸如AlertDialog之类的模态。 – 2013-04-06 01:18:27

+0

感谢您的回答,并为延迟回复感到抱歉。我写了一些代码,并确认它的工作! – Erlend 2013-07-02 13:57:46

相关问题