У меня есть класс, который простирается от View
, и я пытаюсь показать popupWindow
с помощью этого кодавызова showAtLocation из popupwindow происходит сбой приложения
public class dbView extends View implements View.OnTouchListener {
private void showDialog(String msg) {
LayoutInflater layoutInflater;
View dialogContent;
final PopupWindow popupWindow;
layoutInflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
dialogContent = layoutInflater.inflate(R.layout.pop_up_dialog, null);
popupWindow = new PopupWindow(
dialogContent,
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
popupWindow.showAtLocation(this, Gravity.CENTER, 10, 10);
}
}
Мое приложение сбой при попытке выполнить эту последнюю строку. Сообщение исключения является
Невозможно создать обработчик внутри потока, который не под названием Looper.prepare()
Я искал ответы, связанные с этим сообщением и все они подразумевают, что всплывающее окно создавалось на отдельной ветке и что я должен использовать runOnUIThread
, но если я вхожу в VIEW, мне нужно это сделать? Что может быть причиной этой проблемы?
вы сказали, имея ошибку «Невозможно создать обработчик внутри потока, который не называется Looper.prepare()», но где вы упоминаете код об использовании «Handler». пожалуйста, объясните мне правильно с вашим готовым кодом, чтобы я мог попробовать. –