2013-04-11 65 views
1

因此,从菜单项中我想显示一个允许用户输入一些文本的对话框。该对话框工作得很好,但是当我尝试使用EditText对象执行任何操作时,应用程序关闭。可能与我正在使用的对话框的布局有关,但我不确定。下面是按相应的菜单项时调用的方法:无法从对话框中的EditText对象获取文本

private void showChangeDownloadURLDialog() { 
    mapShouldRefresh = false; 

    // Get the layout inflater 
    LayoutInflater inflater = MapsActivity.this.getLayoutInflater(); 

    final EditText mEditText = (EditText) findViewById(R.id.urladdress); 

    new AlertDialog.Builder(MapsActivity.this) 
    .setTitle(R.string.map_menu_test) 
    .setView(inflater.inflate(R.layout.change_url, null)) 
    .setPositiveButton("Ok", new DialogInterface.OnClickListener() { 

     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      Log.i(TAG, "click ok"); 
      String mString = mEditText.getEditableText().toString(); 
      Log.i(TAG, "New URL is: " + mString); 
     } 
    }) 
    .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 

     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      // Does nothing 
     } 
    }) 
    .create() 
    .show(); 
} 

任何帮助表示赞赏,谢谢!

+0

拉升字符串mString = mEditText.getText()来分配View的toString()。 – Richa 2013-04-11 04:15:02

回答

3

正确的代码是:

LayoutInflater inflater = MapsActivity.this.getLayoutInflater(); 
View content = inflater.inflate(R.layout.change_url, null); 
final EditText mEditText = (EditText) content.findViewById(R.id.urladdress); 
new AlertDialog.Builder(MapsActivity.this) 
    .setTitle(R.string.map_menu_test) 
    .setView(content) 
//.... 
+0

从充气机获得的视图中获取EditText ...宾果。感谢芽 – Fobos13 2013-04-12 21:44:13

0

试试这个,

private void showChangeDownloadURLDialog() { 
mapShouldRefresh = false; 

// Get the layout inflater 
LayoutInflater inflater = MapsActivity.this.getLayoutInflater(); 

final EditText mEditText = new EditText(MapsActivity.this); 

new AlertDialog.Builder(MapsActivity.this) 
.setTitle(R.string.map_menu_test) 
.setView(mEditText) 
.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 

    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     Log.i(TAG, "click ok"); 
     String mString = mEditText.getEditableText().toString(); 
     Log.i(TAG, "New URL is: " + mString); 
    } 
}) 
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 

    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     // Does nothing 
    } 
}) 
.create() 
.show(); 

}

0

假设这

final EditText mEditText = (EditText) findViewById(R.id.urladdress); 

R.layout.change_url 

招了下

.setView(inflater.inflate(R.layout.change_url, null)) 

您正在尝试之前其ViewGrouplayout)充气