我想做的是以下几点:
自活动:
MessageCentre centre = new MessageCentre();
centre.getMessages(1);
%1是登录到我的应用程序服务器的设备的Id。服务器然后以JSONArray格式检索与此ID关联的所有消息。我将这些JSONObjects转换为我构建的Message类,并将所有这些新对象保存为MessageCentre类实例中的静态数组。
ArrayAdapter a = new ArrayAdapter(getApplicationContext(),R.id.item_layout, centre.getMessagesList());
listview.setAdapter(a);
所以我可以想出一些方法来处理这个问题:
1)一种使活动在没有ANR的情况下等待一段时间的方法
2)在某种回调方法中,以某种方式将数据返回到活动,而不是onPostExecute()方法
任何帮助都是感激的伙计们,非常感谢!
您可以创建接口
来进行回调。
示例:
创建类AsynctAskMessage
:
public class AsyncTaskMessage extends AsyncTask<Void, Void, Void> {
Context context;
public OnMessageListener mListener;
public interface OnMessageListener {
void messageCallback(ArrayList<String> messageList); // you can change the parameter here. depends on what you want.
}
public AsyncTaskMessage(Context context) {
this.context = context;
mListener = (OnMessageListener) context;
}
@Override
public void onPreExecute() {
}
@Override
protected void onPostExecute() {
// your code goes here for the callback.
// messageList - A list of messages.
mListener.messageCallback(messageList);
}
}
public class MessageCentre {
Context context;
public void MessageCentre(Context context) {
this.context = context;
}
public void getMessages(int id) {
// You said your asyncTask goes here.
AsyncTaskMessage async = new AsyncTaskMessage(context);
async.execute();
}
}
// A class where your ArrrayAdapter.
public class MainActivity extends AppCompatActivity implements AsyncTaskMessage.OnMessageListener {
//..
public void displayMessage() {
MessageCentre centre = new MessageCentre(this);
centre.getMessages(1);
}
@Override
public void messageCallback(ArrayList<String> messageList) {
Log.i("MainActivity", "Response: " + messageList.toString());
ArrayAdapter a = new ArrayAdapter(getApplicationContext(),R.id.item_layout, messageList);
listview.setAdapter(a);
}
}
问题内容: 抱歉再次困扰您,但是我仍然找不到从活动到服务的回调方法… 找到了类似的问题- 如何在Android中定义回调? 但还不确定如何将该示例集成到我的项目中。 任何建议或指向清晰教程的链接都很棒! 问题答案: 在示例中显示的这种回调(观察者模式)在服务和活动之间不起作用。当您从类A 创建了 类B 的实例 并希望将回调从B发送到A 时,请使用观察者模式。 关于服务和活动,情况完全不同。AFAI
问题内容: 我有以下不在活动内的asynctask类。在活动中,我正在初始化asynctask,并且希望asynctask将回调报告回我的活动。可能吗?还是asynctask必须与活动位于同一类文件中? 像这样吗 问题答案: 您可以创建一个,将其传递给(在构造函数中),然后在中调用 例如: 您的界面: 您的活动: 和您的AsyncTask: 编辑 由于此答案非常受欢迎,因此我想补充一些内容。 如果
我把一个额外的动作从第一个动作传给第二个动作。我验证传递给第二个活动的内容。我让它按我的计划运行。我的问题是如何将字符串值传递回第一个活动。 这里我把第一个活动称为第二个活动。 在第二个活动中,我像这样从第一个活动接收数据 我对从第一个活动传递的额外内容执行验证,并希望将单个字符串传递回第一个活动。在第二个活动中,我加载了一个RecyclerViewer并在我尝试过的onClick上。 我的问题至
我有以下问题:当我从一个活动返回到另一个活动时,我需要打开菜单的某些元素。例如: 现在,当我在我的活动中单击“向上”时,菜单的第一个元素总是打开的(跑步者被拉到的地方)。我需要打开这样的元素,它是在打开新活动之前打开的。例如,我在Articles菜单元素中选择了一篇文章,在单击new activity之后,我想再次打开Articles元素。我试图通过点击后退按钮来实现这一点: 但没用怎么了?
我看了其他问题,但我无法澄清从另一个任务调用一个任务的疑问,我有以下代码: parseJSON是一个任务,当我运行程序时,它什么也不做,甚至不调用任务,这就像Android为了安全而忽略的一样。
我试图从碎片屏幕调用一个活动中的方法。 我有一个名为myMethod()的方法,它位于名为MyActivity的活动中;我有一个片段叫做Screen1Fragment。 我想给我的活动打电话。从Screen1Fragment内部创建myMethod(),但我不确定如何执行此操作。 以前,Screen1Fragment是一个活动,因此我扩展了MyActivity,以便可以直接调用myMethod()