2011-04-03 45 views
2

我正在嘗試設置用戶在第一次使用應用程序時必須登錄的UI。自定義對話框似乎是一件好事,因爲我希望主界面在後臺可見。自定義對話框 - 登錄 - 後退按鈕?

所以,我做了什麼 - 我創建了主Activity,並使用ShowDialog()和onCreateDialog從主Activity中。

我創建了 public class LoginDialog extends Dialog implements View.OnClickListener 我可以像活動一樣控制對話框上的所有東西。

理想情況下,我喜歡檢查用戶是否登錄了主要活動,如果沒有 - 顯示此對話框。否則,只要與活動一起去。

在對話框中我想登錄用戶,如果用戶點擊後退而不登錄 - 我想檢測它並完成主要活動。這是我遇到問題的地方。

  1. 在WinForms中,ShowDialog()(在C#中)和下一行在對話框因任何原因關閉時執行。我無法弄清楚如何在Android中執行此操作。

  2. 我還沒有到它,但我想顯示進度欄時單擊登錄按鈕。該欄將在對話框中。它可能/可行嗎?

在此先感謝!

回答

2

您可以使用setOnDismissListener檢測對話解除。在這種方法中,您也可以撥打MyActivity.this.finish()

要在登錄過程中顯示ProgressBar,您可能需要查看this answer。它顯示了AsyncTask的基本結構,您可以使用它來使用ProgressBar而不是ProgressDialog

您將會改變酒吧在onPreExecuteonPostExecute中的能見度,其中bar.setVisibility(View.VISIBLE)bar.setVisibility(View.INVISIBLE)

編輯

dialog.setOnDismissListener(new DialogInterface.OnDismissListener() { 
    @Override 
    public void onDismiss(DialogInterface dialog) { 
     dialog.dismiss(); 
     if (!isLoggedIn()) { 
      MyActivity.this.finish(); 
     } 
    } 
}); 

此代碼應該是在你的MyActivity無論你創建對話框。您需要檢查用戶是否已登錄,因爲onDismiss將被調用,無論是用戶還是自己的代碼關閉對話。

+0

@Mthethew你可以告訴我如何使用(以及在哪裏使用)setOnDismissListener的例子。我無法在任何地方找到示例 – katit 2011-04-03 17:44:28

+0

添加了一些代碼。那有意義嗎? – 2011-04-03 17:56:20

+0

@Matthew。是的,它現在。我對所有這些處理程序(Java新手)都很慢。但是,IDE抱怨@Override,我不認爲需要使用dialog.dismiss()。無論如何,我完成活動,反正孩子對話會被破壞,對嗎?當我運行它時可以正常工作,我只是不確定是否需要這兩行 – katit 2011-04-03 22:09:53