我正在将一个旧的 WebOS 应用程序改编为 android,并且几乎所有的应用程序都使用 phonegap(因为旧代码是 javascript,这很方便),但我希望使用本机 AutoCompleteTextView 进行输入。我收到 NullPointerException,可能是由于我的异国情调混合应用程序。但让我从头开始。我像这样附加了一个页脚(根据我在这里找到的帖子)
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.loadUrl("file:///android_asset/www/index.html");
/* ... boring things here ... */
// http://stackoverflow.com/questions/7320910/android-phonegap-with-native-controls
View footer = View.inflate(getContext(), R.layout.footer, null);
root.addView( footer );
// setContentView(root);
// http://www.kwpro.net/blogs/2011/1/10/1651_Android_AutoComplete_Tutorial_Amendment.html
}
我在博客上发现了一些注释,建议我的问题的解决方案可能是 setContentView,但这似乎不起作用。无论如何,我使用这个(通过window.f.setAutoComplete()通过java接口)从javascript中设置了一次自动完成文本。
public void setAutoComplete(String []s) {
Log.d(TAG, "[native]: setting autocomplete text");
AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.inpu);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_item, s);
textView.setAdapter(adapter);
}
无论如何,一切似乎都正常。也就是说,选择列表会弹出,您有时可以选择一个(有时),然后我会收到强制关闭应用程序的 NullPointerException。我觉得自己没有能力处理这个问题,所以我想我会公开问。
异常转储如下所示:
W/dalvikvm( 1832): threadid=11: thread exiting with uncaught exception (group=0x409c01f8)
E/AndroidRuntime( 1832): FATAL EXCEPTION: WebViewCoreThread
E/AndroidRuntime( 1832): java.lang.NullPointerException
E/AndroidRuntime( 1832): at android.widget.AbsListView$RecycleBin.getScrapView(AbsListView.java:5900)
E/AndroidRuntime( 1832): at android.widget.AbsListView.obtainView(AbsListView.java:2003)
E/AndroidRuntime( 1832): at android.widget.ListPopupWindow$DropDownListView.obtainView(ListPopupWindow.java:1168)
E/AndroidRuntime( 1832): at android.widget.ListView.measureHeightOfChildren(ListView.java:1244)
E/AndroidRuntime( 1832): at android.widget.ListPopupWindow.buildDropDown(ListPopupWindow.java:1095)
E/AndroidRuntime( 1832): at android.widget.ListPopupWindow.show(ListPopupWindow.java:524)
E/AndroidRuntime( 1832): at android.widget.AutoCompleteTextView.showDropDown(AutoCompleteTextView.java:1062)
E/AndroidRuntime( 1832): at android.widget.AutoCompleteTextView.updateDropDownForFilter(AutoCompleteTextView.java:939)
E/AndroidRuntime( 1832): at android.widget.AutoCompleteTextView.onFilterComplete(AutoCompleteTextView.java:921)
E/AndroidRuntime( 1832): at android.widget.Filter$ResultsHandler.handleMessage(Filter.java:285)
E/AndroidRuntime( 1832): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime( 1832): at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime( 1832): at android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:728)
E/AndroidRuntime( 1832): at java.lang.Thread.run(Thread.java:856)
我最好的猜测是,我遇到了“只有一个线程可以做 UI 的东西”......啊......范式,但我不确定如何解决这个问题,如果是这样的话,如果那不是案例,我不知道下一步该尝试什么。