В раскрывающемся списке автозаполнения во всплывающем окне приложение Android принудительно закрывается.Зачем? - PullRequest
2 голосов
/ 08 августа 2011

У меня есть окно автозаполнения, которое я пытаюсь реализовать во всплывающем окне в моем приложении для Android. Помещение этого всплывающего окна в макет моей основной деятельности работает нормально. Когда я переместил его в свой всплывающий макет, он будет успешно отображаться на экране. Однако, когда я набираю за порогом автозаполнения и обнаруживается совпадение (таким образом, запускается выпадающий список элементов, которые соответствуют моему частичному тексту), приложение вылетает со следующей ошибкой:

08-08 11:12:53.803 E/AndroidRuntime(22221): android.view.WindowManager$BadTokenException: Unable to add window -- token android.view.ViewRoot$W@4057f5c0 is not valid; is your activity running?
08-08 11:12:53.803 E/AndroidRuntime(22221): at android.view.ViewRoot.setView(ViewRoot.java:544)
08-08 11:12:53.803 E/AndroidRuntime(22221): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
08-08 11:12:53.803 E/AndroidRuntime(22221): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
08-08 11:12:53.803 E/AndroidRuntime(22221): at android.view.Window$LocalWindowManager.addView(Window.java:430)
08-08 11:12:53.803 E/AndroidRuntime(22221): at android.widget.PopupWindow.invokePopup(PopupWindow.java:916)
08-08 11:12:53.803 E/AndroidRuntime(22221): at android.widget.PopupWindow.showAsDropDown(PopupWindow.java:828)
08-08 11:12:53.803 E/AndroidRuntime(22221): at android.widget.AutoCompleteTextView.showDropDown(AutoCompleteTextView.java:1277)
08-08 11:12:53.803 E/AndroidRuntime(22221): at android.widget.AutoCompleteTextView.updateDropDownForFilter(AutoCompleteTextView.java:1081)
08-08 11:12:53.803 E/AndroidRuntime(22221): at android.widget.AutoCompleteTextView.onFilterComplete(AutoCompleteTextView.java:1064)
08-08 11:12:53.803 E/AndroidRuntime(22221): at android.widget.Filter$ResultsHandler.handleMessage(Filter.java:285)
08-08 11:12:53.803 E/AndroidRuntime(22221): at android.os.Handler.dispatchMessage(Handler.java:99)
08-08 11:12:53.803 E/AndroidRuntime(22221): at android.os.Looper.loop(Looper.java:143)
08-08 11:12:53.803 E/AndroidRuntime(22221): at android.app.ActivityThread.main(ActivityThread.java:4196)
08-08 11:12:53.803 E/AndroidRuntime(22221): at java.lang.reflect.Method.invokeNative(Native Method)
08-08 11:12:53.803 E/AndroidRuntime(22221): at java.lang.reflect.Method.invoke(Method.java:507)
08-08 11:12:53.803 E/AndroidRuntime(22221): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
08-08 11:12:53.803 E/AndroidRuntime(22221): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
08-08 11:12:53.803 E/AndroidRuntime(22221): at dalvik.system.NativeStart.main(Native Method)

А вот код, который я использую (всплывающее окно запускается при нажатии кнопки, где кнопка находится в основном макете упражнения):

public void onClick(View v) {
   LayoutInflater inflater = 
             (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
   PopupWindow pw = new PopupWindow(
             inflater.inflate(R.layout.auto_complete_location, null, false), 
             400, 600, true);
   AutoCompleteTextView autoCompleteLocationsView =(AutoCompleteTextView)
             pw.getContentView().findViewById(R.id.autoCompleteLocations);
   ArrayAdapter<String> adapter = new ArrayAdapter<String>
             (autoCompleteLocationsView.getContext(),
              android.R.layout.simple_dropdown_item_1line, locationNames);
   autoCompleteLocationsView.setAdapter(adapter);
   pw.showAtLocation(findViewById(R.id.mainActivityContainer), Gravity.CENTER, 0, 0);
}

Заранее спасибо за любую помощь.

...