【发布时间】:2016-05-18 14:50:29
【问题描述】:
在searchactivity中:我声明了一个后台工作类来连接远程mysql数据库并获取一些数据
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search);
BackgroundWorker worker = new BackgroundWorker(SearchActivity.this);
worker.execute("Searchfirst");
////////// My message is empty below
Toast.makeText(SearchActivity.this,getIntent().getExtras().getString("searchresult"),Toast.LENGTH_SHORT).show();
}
在 backgroundworker.class 中,backgroundworker 类确实获得了数据但未能传递给我的活动
protected void onPostExecute(Wrapper w) {
else if(w.result.contains("Searchfirst successfully!")){
////////// My message can be showed correctly here
Toast.makeText(context,w.result.toString(),Toast.LENGTH_SHORT).show();
Intent colleges = new Intent(context,SearchActivity.class);
colleges.putExtra("searchresult", w.result);
}
}
我还发现,如果我将数据放入意图并通过在 onPostExecute() 中调用 startActivity(intent) 立即启动该活动,则数据可以传递给该意图,但是,如果我没有启动该活动,数据丢失了?
【问题讨论】:
-
创建一个
Intent并在其中添加一个额外的内容并不会神奇地将这些数据发送到您的活动。通常,您使用带有回调的接口将数据发送回活动或任何对结果感兴趣的对象,如 here 所示。 -
其实我之前看过你的链接,但是每次我测试它都会出现另一个问题。
-
还有什么问题?
-
很难说,就像我尝试实现登录和登录工作,但我的注册活动然后崩溃了。
-
你可以查看logcat的输出看看它崩溃的原因。
标签: java android android-activity android-studio android-asynctask