intent.getextra() 正在接收 null 并且 intent.hasextra() 在第二个活动中不起作用
Posted
技术标签:
【中文标题】intent.getextra() 正在接收 null 并且 intent.hasextra() 在第二个活动中不起作用【英文标题】:intent.getextra() is receiving null and intent.hasextra() is not working in the second activity 【发布时间】:2018-11-06 20:08:37 【问题描述】:我正在尝试使用意图将数据连续发送到另一个活动。
在第一个活动中,
MainActivity.java
class sender extends AsyncTask <void, void, void>
@Override
protected Void doInBackground(Void... params)
while(true)
if(!intent.hasextra())
String data = dataBuffer;
intent.putextra(EXTRA_MESSAGE,data);
@Override
protected void onPreExecute()
// intent.putextra(EXTRA_MESSAGE,"Test data"); --> This is working
startActivityForResult(intent, 333);
SecondActivity.java
class receiver extends AyncTask <void, void, void>
while(true)
if(intent.hasextra())
resultString = intent.getextra(MainActivity.EXTRA_MESSAGE);
mHandler.obtainMessage(MESSAGE_READ,resultString
).sendToTarget();
intent.removExtra(MainActivity.EXTRA_MESSAGE);
在调试时,两个线程都在执行,但 while(true) 中的 if 条件不满足。
注意:在 StartActivityForResult() 之前,putExtra 正在发送数据,在 secondActivity 中我可以接收数据。
请告诉我为什么在 doInbackground() 中都没有发送和接收数据。
【问题讨论】:
dataBuffer
是否有可能变为空?
不,我检查过了,它总是有一个字符串。
【参考方案1】:
调试时,两个线程都在执行,但 if 条件 里面的while(true)不满足。
查看您发布的代码,这是因为您的两个 AsyncTask
正在同时运行,因此在接收 Asynctask 时转到 doInBackground()
它没有找到 Intent
值。您最好延迟执行第二个AsyncTask
。
另一方面,我强烈建议您改变您的方法,因为这将在未来导致许多问题。还有其他更好的方式在两个活动之间进行通信。
【讨论】:
我引入了延迟,但在第二个活动中仍然没有收到数据。请告诉我您对在两个活动之间进行交流的建议。以上是关于intent.getextra() 正在接收 null 并且 intent.hasextra() 在第二个活动中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
可视代码 - 错误 NU1101:找不到包 Microsoft.EntityFrameworkCore
关于后台接收参数为null的问题之ajax--contentType