2013-04-05 63 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