2013-04-17 86 views
0

我有一個帶有3個EditText的對話框,用於獲取ftp地址,用戶名和密碼。我使用.setNeutralButton來創建一個按鈕來「測試連接」。我把它連接到ftp並顯示結果Toast,但我不想讓測試按鈕關閉對話框。如何在連接測試期間保持對話框打開?單擊中性按鈕後是否可以保持對話框打開?

livePreviewChk.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     LinearLayout lila1 = new LinearLayout(NewSite.this); 
     lila1.setOrientation(1); // 1 is for vertical orientation 

     final EditText serverName = new EditText(NewSite.this); 
     serverName.setHint("Server name"); 

     final EditText serverAddress = new EditText(NewSite.this); 
     serverAddress.setHint("Server Address"); 

     final EditText username = new EditText(NewSite.this); 
     username.setHint("Username:"); 

     final EditText password = new EditText(NewSite.this); 
     password.setHint("Password"); 

     AlertDialog.Builder alt_bld = new AlertDialog.Builder(
       NewSite.this); 
     alt_bld.setIcon(R.drawable.ftpicon); 
     alt_bld.setTitle("Enter the login details for the host FTP") 
       .setCancelable(true) 
       .setPositiveButton("Save", 
         new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, 
            int id) { 
           } 
          } 
         }) 
       .setNeutralButton("Test Connection", 
         new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, 
            int id) { 
           FTPConnector testConnection = new FTPConnector(); 
           boolean status = testConnection 
             .ftpConnect(host, user, pass, 
               port); 
           if (status == true) { 
            connectionSuccessfull = true; 
           } else { 
            connectionSuccessfull = false; 
           } 
          } 
         }) 
       .setNegativeButton("Cancel", 
         new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, 
            int id) { 
           // if this button is clicked, just close 
           // the dialog box and do nothing 
           dialog.cancel(); 
          } 
         }); 

     lila1.addView(serverName); 
     lila1.addView(serverAddress); 
     lila1.addView(username); 
     lila1.addView(password); 

     AlertDialog alert = alt_bld.create(); 
     alert.setView(lila1); 
     alert.show(); 
    } 
}); 

回答

3

據我所知,這是不可能不延長Dialog類。但是,使用您擁有的功能可能更容易,更好,只需將其放入其自己的Activity中並使用Dialog theme即可。所有你需要做的就是把你的代碼放到一個新的Activity對於這一點,並在你的manifest使用dialog theme

<activity 
     android:name="com.your.package.YourClassName" 
     android:label="YOurLabel" 
     android:theme="@android:style/Theme.Dialog" > 
</activity> 

這會給一個Dialog的外觀和感覺,而被包含在它自己的Activity

這是一個SO answer on extending Dialog。我沒有仔細看過它,但看起來它可能會給你你需要的東西,如果你選擇這個選項。

相關問題