gpt4 book ai didi

android - PhoneGap 中的 AutoCompleteTextView (ArrayAdapter) NullPointerException

转载 作者:行者123 更新时间:2023-11-30 04:09:22 26 4
gpt4 key购买 nike

我正在将一个旧的 WebOS 应用程序改编为 android,我几乎所有的应用程序都使用 phonegap(因为旧代码是 javascript,这很方便),但我希望使用 native 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,但这似乎不起作用。无论如何,我使用这个(通过 Java 接口(interface)通过 window.f.setAutoComplete())从 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 的事情”......啊......范式,但我不确定如果是这样的话如何解决这个问题,如果事实并非如此,我不知道接下来要尝试什么。

最佳答案

从来没有得到对此的回应,但以防万一其他人遇到它......自动完成选择是 ui 的一部分,所以你必须要求 ui 更新它。真的很简单。我已经在问题本身中推测了这一点,但并没有一路推理出来。

public void setAutoComplete(String []s) {
Log.d(TAG, "[native]: setting autocomplete text");

autoCompleteArray = s;

handler.post(new Runnable() {
public void run() {
hist.clear();
for(int i=0; i<autoCompleteArray.length; i++)
hist.add(autoCompleteArray[i]);
hist.notifyDataSetChanged();
}
});
}

关于android - PhoneGap 中的 AutoCompleteTextView (ArrayAdapter) NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11074958/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com