findViewById - 无法解析方法
Posted
技术标签:
【中文标题】findViewById - 无法解析方法【英文标题】:findViewById - Cannot resolve method 【发布时间】:2015-02-26 19:37:23 【问题描述】:我是安卓编程新手。这是我的第一个应用程序。我正在尝试了解使用异步任务的最佳实践或方法。
场景 - 我需要通过 HTTP 获取数据并将其显示在应用主屏幕上。
main Class - 在屏幕上绘制一些基本的东西并调用 Async 类。 异步类 - 从 strings.xml 获取数据,通过 http 发送,检索内容并将处理后的内容存储为 Enum。否
我的问题 - 现在当我尝试在 Async 类方法中从 activity.xml 获取表时,它显示无法解析方法 findViewById。
这是正确的做法吗?请帮忙。
【问题讨论】:
你的课程扩展了什么? View 和扩展它的类有问题的方法 谢谢,尝试扩展视图... 【参考方案1】:您应该发布 Activity 和 Async 类中的代码,这将有助于我们更快地找到解决您问题的方法。
我只是在猜测您写的内容,但您似乎正在尝试访问 Async 类中的 findViewById 方法,由于 findViewById而无法完成> 作为 Activity 类的方法,因此它在 Async 中不存在。
你应该在你的 Activity 上回调你的 UI 线程来更新它。
为此,您应该对 Async 类的 postExecute
方法进行任何更改,记住在 doInBackground
方法中所做的任何事情都是在不同的线程中完成的。只有这样,您才能应用所需的更改。
【讨论】:
问题是,我有一个枚举作为处理结果。这不能从扩展 Async 类的类传递回 Activity。 你能发布一些代码吗?您是否在 Activity 类中声明了 Async 类?您是否尝试在 doInBackground 方法中进行更改?【参考方案2】:您不能在后台运行 UI 操作。您应该像这样在onPreExecute
、onPostExecute
或onProgressUpdate
中运行它们。
@Override
protected void onProgressUpdate (String... result)
((TextView) findViewById(R.id.textViewRSSI2)).setText(result[0]);
更新:在您的AsyncTask
中您设置了三种类型:
private class DownloadWebpageTask extends AsyncTask<String, String, String>
第一个是你在执行时传递给AsyncTask的,第二个是进度单元,第三个是结果单元。
当您发布进度时,您在doInBackground()
中执行以下操作:
publishProgress(yourstring);
上面代码中的 result[0] 将是你的字符串。
对于onPostExecute
,您应该在您的doInBackground 中return
一个值:
@Override
protected String doInBackground(String... urls)
return yourstring
【讨论】:
我喜欢这个网站,你被否决了,但没人费心解释原因。 如何获取结果枚举到 onPostExecute 或 onProgressUpdate 以填充表?有什么建议吗?以上是关于findViewById - 无法解析方法的主要内容,如果未能解决你的问题,请参考以下文章
当我在导航抽屉中使用带有发送片段的 EditText 时,无法解析片段中的方法“findViewById”? [复制]
Android studio 无法解析 ActionBarActivity