我已经实现了一个弹出对话框,里面有一个 EditText 元素。我无法在屏幕上显示软键盘,因为它无法填充 EditText 元素。这个问题是众所周知的,但我仍然无法让它工作。我尝试了不同的选项来解决这个问题 - 请参阅 onCreate 方法。谢谢。
public class MyPopup extends AbstractPlainPopup {
protected Context _context;
public CreatePlaylistPopup(Context context) {
super(context);
_context = context;
}
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LayoutInflater inflater = getLayoutInflater();
View container = inflater.inflate(R.layout.popup_new_playlist, null);
final EditText titleInput = (EditText) container.findViewById(R.id.my_text_view);
titleInput.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
InputMethodManager mgr = (InputMethodManager) _context.getSystemService(Context.INPUT_METHOD_SERVICE);
mgr.showSoftInput(titleInput, InputMethodManager.SHOW_IMPLICIT);
//getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
//MyPopup.this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
}
}
});
container.findViewById(R.id.cancelButton).setOnClickListener(
new onCancelClick());
container.findViewById(R.id.createButton).setOnClickListener(
new onCreateClick());
setContentView(container);
}
abstract public class AbstractPlainPopup extends AlertDialog implements Observable {
public final static int CANCEL = 0;
public final static int OK = 1;
protected int _state;
protected ArrayList<Observer> observers = new ArrayList<Observer>();
public AbstractPlainPopup(Context context){
super(context);
}
public AbstractPlainPopup(Context context, boolean cancelable, OnCancelListener cancelListener) {
super(context, cancelable, cancelListener);
}