- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我遇到了 this error之前,但认为这是严格模式系统的一些错误。然而,这显然是正确的,因为我现在很遗憾地发现了。 :(
我的程序由一个 Activity 和大量 fragment 组成。我有一个 NetworkWorker fragment ,它像这样启动 URL 请求:
public void startURLRequest(Fragment target, String url, String message)
{
if (asyncTask != null) asyncTask.cancel(true);
asyncTask = new FragmentHttpHelper(url, message, target);
asyncTask.doInBackground();
return;
}
FragmentHttpHelper 是派生自 AsyncTask 的自定义内部类:
private class FragmentHttpHelper extends AsyncTask<Void, Void, String>
{
//...
@Override
protected String doInBackground(Void... params)
{
if (CheckInternet())
{
try
{
URL myURL = new URL(url);
httpClient = new DefaultHttpClient();
if (this.message == null)
{
httpRequest = new HttpGet(myURL.toExternalForm());
}
else
{
httpRequest = new HttpPost(myURL.toExternalForm());
HttpEntity myEntity = new StringEntity(message, "UTF-8");
((HttpPost) httpRequest).setEntity(myEntity);
}
// and so on...
}
//catches
finally
{
// auf jeden Fall Verbindung beenden
if (httpRequest != null) httpRequest.abort();
// if (httpClient != null) httpClient.close();
}
}
else
{
showDialog(getString(R.string.net_notify_no_network), target);
}
//...
}
/**
* gets called after AsyncTask has finished
*/
protected void onPostExecute(String result)
{
if (target == null)
{
((NetworkWorkerListener) getActivity()).onDownloadHasFinished((!result.contentEquals(ERROR)), result);
}
else
{
((NetworkWorkerListener) target).onDownloadHasFinished((!result.contentEquals(ERROR)), result);
}
}
}
NetworkWorkerListener 只是一个接口(interface),用于在启动 URL 请求的 Fragment 上进行回调。当我在我的 2.2 应用程序中使用这个类时,它一直运行良好。然后我会在我的 Activity 中导出它。
现在,如果选择了一个菜单项,另一个工作 Fragment 通过上述方法启动 URL 请求并打开一个加载对话框:
FragmentManager fragmentManager = getFragmentManager();
NetworkWorker network = (NetworkWorker) fragmentManager.findFragmentByTag(TabletMain.NETWORK);
if (network == null) return WorkerFeedback.NO_NETWORK_WORKER;
myDialog = LoadingDialog.createInstance(getString(R.string.notify_download), this);
myDialog.show(fragmentManager, TabletMain.ONETIME);
network.startURLRequest(this, someurl, null);
至少这是应该发生的事情。相反,当我单击菜单项时,我的应用程序卡住并且直到显示加载对话框。接下来发生的是对下载结束的 react (或者,在我的例子中是一条错误消息,因为我正在发送无意义的字符串)。意思是达到了 onPostExecute()。
我现在感觉真的卡住了——是不是不能将 AsyncTask 与 Fragment 一起使用?还是我做错了什么?
感谢您的帮助,水母
最佳答案
不要直接调用doInBackground
,而是调用execute
(在异步任务上)
关于安卓蜂窝 : Fragment not able to start AsyncTask?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6412464/
我已经启动并运行了 6 个节点的 cloudera 5.0 beta 集群 但是我无法使用命令查看hadoop HDFS的文件和文件夹 sudo -u hdfs hadoop fs -ls / 在输出
我使用 Hibernate 4.1.7 和 EhCache 作为二级缓存。我正在实现一项休息服务,以根据需要清除 cahce(驱逐所有区域)。 下面是代码片段 org.hibernate.stat.S
所以有列表?,seq?,向量?, map ?等等以确定参数是什么类型的集合。 什么是区分两者的好方法 map (即包含键值对的东西) 一个集合(即包含值的东西) 一个非集合值,如字符串。 有没有比这更
我是 Handlebars 和 Javascript 的新手,所以我提前道歉。作为学习 Handlebars 的一种方法,我尝试将在线示例中的所有基本组件放入一个独立的网页中。然而它运行得并不好。
我如何从显示语句中转义大括号 progress abl ?? 我们的 friend 谷歌没有找到任何信息 DISPLAY "{"httCust":[]}" 最佳答案 使用波浪号 ~ 转义大括号和双引号
我编写此代码是为了打印一个可能的骑士之旅,以便每个地方都被访问一次。 public class Main{ static int move[][]=new int[8][8];
所以这是我的程序的第二个问题,但是是一个完全不同的问题,感谢那位乐于助人的人建议 JSON 作为一种更好的方法来完成我想要的事情...... 无论如何... JSON 取得了一些成功。该程序也改变了主
我正在尝试与我拥有的一些数据创建一对多关系。 我有一个Project和许多项目,我正在尝试设置 Controller 来保存它们,但这是我第一次使用一对多关系,我的头是关于爆炸。 这就是我的保存方法
我试图在 Apache Tomcat/MySQL/Win 10 环境中设置 Broadleaf eCommerce,但我无法部署 WAR。我已经通过 Broadleaf 博客/论坛和 StackExc
我一直在尝试使用 python ebaysdk,但我无法理解为什么我不断收到以下错误: {'Timestamp': '2017-02-21T19:55:31.915Z', 'Errors': {'Lo
我知道这是一个非常广泛的问题,但我对此很好奇,所以我决定问一下。请理解,不幸的是,我提供的信息是我所拥有的全部:) 我想知道,在C++程序中,下面的情况可能发生在哪些情况下: 以下是(模仿的)代码片段
type Friend struct { name string age int } type Friends struct { friends []Friend } 我想让
select() 是一个很棒的系统调用。您可以打包任意数量的文件描述符、套接字描述符、管道等,并在输入可用时以同步方式收到通知。 有没有办法创建一个间隔/一次性计时器并将其与 select() 一起使
我在解码 HEVC 时遇到问题使用 avcodec 编码的视频。 修改源代码的一行允许解码mpeg1这不是我需要的。 谢谢 #include #include #include #include
我们正在构建一个 AbleCommerce 7 网上商店,并尝试将其与现有的销售点系统集成。产品库存将在实体店和网上商店之间共享,因此我们需要定期更新每种产品的手头数量,以使 POS 和网上商店尽可能
我刚刚下载了 openfire 3.10。 安装正常。但是当我启动 Openfire 服务器时,它在启动过程中出现以下错误: java.lang.IllegalArgumentException: I
对于以下脚本 #!/bin/sh count1=0 noOfArg=0 checkOtherParam() { echo $parameter retu
我尝试根据 README 文件调用命令,使用 maven 编译 TMT 工具包源代码 mvn compile 但是由于项目根目录下没有pom.xml文件,所以maven无法编译项目。 我还尝试使用空的
我有一个关于查询的问题,我实际上是在尝试膨胀 View ,其中可以将添加为 friend 的人添加到 recyclerView 中。 @Override public void onStart(){
我的 reducer 输入值是一个 double 组。 719.000 501.000 -75.000 501.000 508.000 -62.000 -75.000 -62.000 10.000
我是一名优秀的程序员,十分优秀!