因此,从菜单项我想显示一个允许用户输入一些文本的对话框。该对话框工作正常,但当我尝试使用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 :(得分: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)
//....
答案 1 :(得分: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();
}
答案 2 :(得分:0)
假设这个
final EditText mEditText = (EditText) findViewById(R.id.urladdress);
在
R.layout.change_url
将其移至
.setView(inflater.inflate(R.layout.change_url, null))
您试图在View
(ViewGroup
)被夸大之前分配layout