В MainActivity у меня есть всплывающее окно с AutoCompleteTextView, и оно работает. Я даже могу сделать с этим некоторые кадры (например, textView.setText("New")). Но меня беспокоит адаптер, потому что после нажатия TextView ничего не происходит (нет списка и клавиатуры).
Я думаю, что проблема в линии:
ArrayAdapter<String> adapter = new ArrayAdapter <String (customView.getContext(),android.R.layout.simple_dropdown_item_1line, countryNameList);
Особенно по первому параметру - контексту. Я не знаю, что я должен положить туда. Мой код:
public void steptwo() {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(LAYOUT_INFLATER_SERVICE);
View customView = inflater.inflate(R.layout.popup_observedproperty,null);
mPopupWindow = new PopupWindow(
customView,
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT
);
String[] countryNameList = {"India", "China", "Australia", "New Zealand", "England", "Pakistan"};
ArrayAdapter<String> adapter = new ArrayAdapter<String>(customView.getContext(),
android.R.layout.simple_dropdown_item_1line, countryNameList);
AutoCompleteTextView textView = (AutoCompleteTextView) customView.findViewById(R.id.autoCompleteTextView);
textView.setText("New");
textView.setAdapter(adapter);
if (Build.VERSION.SDK_INT>=21){
mPopupWindow.setElevation(5.0f);
}
mPopupWindow.showAtLocation(mRelativeLayout, Gravity.CENTER,0,0);
}
customView не имеет метода getActivity




Вам нужно сделать PopupWindow фокусируемым. Чтобы разрешить AutoCompleteTextView немедленно открывать клавиатуру, установите SoftInputMode для PopupWindow как SOFT_INPUT_STATE_ALWAYS_VISIBLE.
public void steptwo() {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(LAYOUT_INFLATER_SERVICE);
View customView = inflater.inflate(R.layout.popup_observedproperty,null);
mPopupWindow = new PopupWindow(
customView,
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT
);
String[] countryNameList = {"India", "China", "Australia", "New Zealand", "England", "Pakistan"};
ArrayAdapter<String> adapter = new ArrayAdapter<String>(customView.getContext(),
android.R.layout.simple_dropdown_item_1line, countryNameList);
AutoCompleteTextView textView = (AutoCompleteTextView) customView.findViewById(R.id.autoCompleteTextView);
textView.setText("New");
textView.setAdapter(adapter);
textView.setThreshold(1);
if (Build.VERSION.SDK_INT>=21){
mPopupWindow.setElevation(5.0f);
}
mPopupWindow.setFocusable(true);
mPopupWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
mPopupWindow.showAtLocation(mRelativeLayout, Gravity.CENTER,0,0);
}
Клавиатура показывает сейчас. Но когда я начинаю печатать, приложение вылетает, и я получаю: 2019-07-11 15:05:07.837 15843-15843/com.example.myapplication E/MPlugin: Unsupported class: com.mediatek.common.telephony.IOnlyOwnerSimSupport 2019-07-11 15:05:19.790 15843-15843/com.example.myapplication E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.myapplication, PID: 15843 android.view.WindowManager$BadTokenException: Unable to add window -- token android.view.ViewRootImpl$W@943a1d5 is not valid; is your activity running?
Я думаю, вы, возможно, пытаетесь finish свою активность, пока ваш PopupWindow не работает.
Кстати, вы не можете запустить свой PopupWindow в onCreate, ваша активность должна быть запущена, чтобы PopupWindow получил окно, к которому он может прикрепиться.
Спасибо за вашу помощь. Я не запускал всплывающее окно в onCreate. Я столкнулся с другой странной проблемой: когда я набираю какую-то букву, которая не соответствует моей опции countryNameList, я не получаю ошибку - все в порядке; но когда мое набранное письмо подходит под любую опцию, например, «Ne» (чтобы получить Новую Зеландию), приложение вылетает с той же ошибкой, что и выше. У вас похожее поведение?
Я не получил никаких ошибок. Опубликуйте весь код своей активности, и я смогу дать вам представление о том, что происходит не так.
Я предполагаю, что раскрывающийся список вызывается до вызова методов жизненного цикла.
Я не могу определить какие-либо проблемы в вашем коде, вы можете опубликовать другой вопрос на StackOverflow, возможно, кто-то еще может знать проблему.
Вы можете попробовать заменить android.R.layout.simple_dropdown_item_1line на android.R.layout.simple_spinner_dropdown_item, но я сомневаюсь, что это исправит ситуацию.
Подводя итог, счетчик работает во всплывающем окне, выпадающий список не работает.
Круто, отметьте мой ответ как правильный, если считаете, что он помог. :)
Кстати, где вы можете найти какую-либо документацию или ссылку, в которой прямо указано, что во всплывающем окне работают только счетчики (и есть ли у вас какие-либо идеи, связана ли эта проблема с конкретным устройством или не зависит от него)?
Попробуйте customView.getActivity() @here Адаптер ArrayAdapter<String> = new ArrayAdapter<String>(customView.getContext(), android.R.layout.simple_dropdown_item_1line, countryNameList);