2010-10-19 25 views
10

Tôi muốn nhắc người dùng cung cấp cho tôi dữ liệu nhập vào trong ứng dụng Android của tôi bằng hộp thoại. đây là những gì tôi đã tìm thấy:nhập thông tin người dùng Android bằng cách sử dụng hộp thoại

AlertDialog.Builder alert = new AlertDialog.Builder(this); 

alert.setTitle("Title"); 
alert.setMessage("Message"); 

// Set an EditText view to get user input 
final EditText input = new EditText(this); 
alert.setView(input); 

alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
public void onClick(DialogInterface dialog, int whichButton) { 
String value = input.getText(); 
// Do something with value! 
} 
}); 

alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
public void onClick(DialogInterface dialog, int whichButton) { 
    // Canceled. 
} 
}); 

alert.show(); 

nhưng điều này mang lại cho tôi:

android.view.WindowManager $ BadTokenException: Không thể thêm cửa sổ - rỗng thẻ không phải dành cho một ứng dụng

là có bất kỳ vấn đề trên mã của tôi nó có vẻ như một đối số null được thông qua trên hộp thoại nhưng tôi không thể tìm ra vấn đề là gì.

+1

'String value = input.getText() toString();.' – Fred

Trả lời

8

Khi tôi chạy mã của bạn trong một dự án mới, nó hoạt động tốt. Vì vậy, có lẽ "này" mà bạn đang sử dụng

  • không phải là một hoạt động
  • không phải là hoạt động theo quan điểm ví dụ: có thể có một hoạt động phụ huynh. Nếu nó là con của một số hoạt động, sử dụng getParent() thay vì "this".
  • là null

Hope this helps.

3

Tôi đã viết một lớp trợ giúp giúp dễ dàng tạo hộp thoại nhắc chỉ với một vài dòng mã.

PromptDialog dlg = new PromptDialog(MainActivity.this, R.string.title, R.string.enter_comment) { 
@Override 
public boolean onOkClicked(String input) { 
    // do something 
    return true; // true = close dialog 
} 
}; 
dlg.show(); 

See full code => Prompt Dialog for Android

Các vấn đề liên quan