我是Android的初学者,也是Stackoverflow的新手。请原谅我的愚蠢问题。但是我在这里找不到解决方案,所以把它作为一个新问题发布。
我有一个包含Autocompletetextview和webview的活动。我想点击webview中的超链接来填充Autocompletetextview中的一些文本。所以我在网页中调用了Javascript,后者又调用了Javascript AppInterface。在界面功能中,我想更新Autocompletetextview文本。
我可以从javascript收集文本。但是在设置Autocompletetextview的文本时,我的应用程序崩溃了。
WebAppInterface.java
public class JsInterface {
@JavascriptInterface
public void NewText(final String text)
{
Log.d("New_Text", "" + text); //Works fine till here.
((Activity)mContext).findViewById(R.id.autoCompleteTextView);
Handler mHandler = new Handler();
mHandler.post(new Runnable() {
@Override
public void run() {
AutoCompleteTextView SearchTextbox = (AutoCompleteTextView) ((Activity)mContext).findViewById(R.id.autoCompleteTextView);
SearchTextbox.setText(text);
}
});
}
}
应用崩溃时出错
E/AndroidRuntime: FATAL EXCEPTION: JavaBridge
Process: com.test.xxx, PID: 22102
java.lang.ClassCastException: android.app.Application cannot be cast to android.app.Activity
at com.test.xxx.WebAppInterface$1.run(WebAppInterface.java:102)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.os.HandlerThread.run(HandlerThread.java:61)
我想知道我的更新UI组件的方法是否正确? 如果是,那么哪些更改将解决错误并且可以正常工作。
答案 0 :(得分:1)
该行
java.lang.ClassCastException:android.app.Application无法强制转换为android.app.Activity
是不言自明的。您将mContext
投射到Activity
,而它不是Activity类的实例。
您可以向setAutoCompleteTextView
课程添加名为JsInterface
的方法,您可以在该课程中保留对该自动完整文字视图的引用。
public void setAutoCompleteTextView(AutoCompleteTextView textview){
this.mTextView = textview;
}
在JavaScript界面方法中,请像this.mTextView.set...()
一样使用它。
答案 1 :(得分:0)
关键是:
java.lang.ClassCastException: android.app.Application cannot be cast to android.app.Activity
这意味着有问题的行中的mContext
变量是Application
对象而非Activity
,因此请参阅Activity
,而不是Application
分配给Option Explicit
Private Sub SetDueButton_Click()
Dim UF As UserForm1 'you can declare a user form as an independent object
UF.Show
DueDate.Value = UF.tempdate 'get the property
Unload UF 'now you can unload or set to Nothing
End Sub
1}}。