2011-04-21 66 views
3

在我的Android代碼中,我誇大了GUI並將所有子元素存儲在不同的類中。在那個類中,我想添加一個方法來讀取用戶輸入。我試圖按照link中的內容進行操作,但無論我做什麼,都會將最終值複製到非最終值中。我雖然關於創建另一個GUI,但無法做到這一點。這裏是我現在的方法:在對話框彈出框中獲取用戶字符串

private String setText(int id){ 
     AlertDialog.Builder alert = new AlertDialog.Builder(this.show); 
     final EditText input = new EditText(this.show); 
     alert.setView(input); 
     String out; 
     alert.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
      //@Override 
      public void onClick(DialogInterface dialog, int which) { 
       Editable value = input.getText(); 
       out = value.toString(); 
       // TODO Auto-generated method stub 

      } 
     }); 

    } 
} 

我用一個字符串返回到其設置的TextView價值的另一種方法。


我試着做下面的技巧:

private String setText(){ 

    AlertDialog.Builder alert = new AlertDialog.Builder(this.show); 
    final EditText input = new EditText(this.show); 
    alert.setView(input); 
    String out; 
    alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 

     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      input.setText("canceled"); 
     } 
    }); 
    alert.setPositiveButton("OK", new DialogInterface.OnClickListener() { 

     @Override 
     public void onClick(DialogInterface dialog, int which) { 


     } 
    }); 
    alert.show(); 
    String toSend = input.getText().toString(); 
    this.maxT.setText(toSend); 
    return toSend; 

maxTTextView場。該應用程序只需放置一個空字符串。我想我應該等到AlertDialog關閉後,我正在尋找一種方法。

+0

您可能要發送包含按下OK按鈕,當您保存在「出」的值的意圖。 – 2011-04-21 15:04:45

回答

6

只需設置你的視圖的ID和引用它:

private String setText(int id){ 
    AlertDialog.Builder alert = new AlertDialog.Builder(this.show); 
    EditText input = new EditText(this.show); 
    input.setId("myInput");   
    alert.setView(input); 
    String out; 
    alert.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
     //@Override 
     public void onClick(DialogInterface dialog, int which) { 
      EditText input = (EditText) dialog.findViewById("myInput"); 
      Editable value = input.getText(); 
      out = value.toString();    

     } 
    }); 

} 

}

查看:setId() API

對話框的onClick:onClick() API

+0

感謝您的重播。我試過你的解決方案,但它沒有奏效。首先,我可以在ID中放置一個字符串,只有一個int(我只是在那裏放置一個數字)。其次,無論出於何種原因,我都可以在Dialog上使用findViewById。我不知道我搞砸了什麼......我試圖繞過,但它沒有工作(看看我編輯的問題) – Yotam 2011-04-21 19:45:30

+0

明白了。我已經調用了另一個函數。我讀了一點,發現android操作系統不支持GUI。 – Yotam 2011-04-22 08:28:25

+1

DialogInterface上沒有'findViewbyId'。它應該是'getActivity()。findViewById' – 2013-04-20 23:34:32

2

您可以創建自定義對話框,並訪問這樣的ID。如果你想使用一個警告對話框,你可以試試這個:

首先創建一個佈局與單EDITTEXT:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
<EditText android:text="Stateful" 
android:id="@+id/EditText01" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content"> 
</EditText> 
</LinearLayout> 

然後誇大這個佈局中:

AlertDialog.Builder builder= new AlertDialog.Builder(this); 
LayoutInflater inflater= getLayoutInflater(); 
final View myView= inflater.inflate(R.layout.alert_dialog_text_entry, null); 
builder.setTitle("About"); 
builder.setMessage(alertMessage+"Version: "+versionName); 
builder.setView(myView); 
AlertDialog alert= builder.create(); 
+0

謝謝,這是一個好主意,我用另一種方式實現了它,但它對我很有用。 – Yotam 2011-04-22 08:29:25

0

好後用Tony Stark here,您可以通過添加圖標來美化對話框。確保您的圖形文件夾中有圖片。

builder.setTitle("Message Sent!").setCancelable(false).setNegativeButton("Close",new DialogInterface.OnClickListener() 
          {public void onClick(DialogInterface dialog, int id) {dialog.cancel();}}); 
          AlertDialog alert = builder.create(); 
          alert.setIcon(R.drawable.send);//call your image for your icon here 
          alert.show(); 

enter image description here