现象:Activity A启动Activity B,B返回数据到A,TextView的setText设置内容成功,但是就是不显示,解决方法如下:
1.在要更新UI的Activity中的onActivityResult方法中添加代码如下:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case DIALOG_INPUT_INFORS:
if (null != data) { Bundle bundle = data.getExtras(); final String showText = bundle.getString("content"); final TextView tvInfo = (TextView) m_itemView.findViewById(R.id.tv_info); //更新这个数据源非常重要,不然更新主线程后,会触发RecylerView从数据源重新更新 //导致得到的数据无法显示在UI控件上 RecycleViewAdapter.RecyclerViewItemsData itemData = m_data.get(m_clickItemIndex); itemData.m_info = showText; this.runOnUiThread(new Runnable() { @Override public void run() { if (null != m_itemView) { tvInfo.setText(showText); Log.d(TAG, "-- Lee -- run : " + tvInfo.getText()); } } }); }
break;
default:
break;
}
super.onActivityResult(requestCode, resultCode, data);
}
2.参考文献:
[1]ImportSUC的回答.关于android runOnUiThread更新ui的问题[EB/OL].https://ask.csdn.net/questions/717601