3 回答
![?](http://img1.sycdn.imooc.com/545847d40001cbef02200220-100-100.jpg)
TA贡献1852条经验 获得超1个赞
我的情况是更新MainActivity托管的一个片段中的文本字段。我找到的最简单的解决方案是: -
在我的MainActivity类中检索了MainActivtiy的运行实例。这是我的MAinActivity
private static MainActivity mainActivityRunningInstance;
public static MainActivity getInstace(){
return mainActivityRunningInstance;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mainActivityRunningInstance =this;
----------
}
现在在Broadcast reciever的onRecieve方法中,获取该实例并调用update方法
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().matches(Intents.PROVIDER_CHANGED_ACTION)) {
String textValue="the text field value";
// the null check is for, if the activity is not running or in paused state, in my case the update was required onlyif the main activity is active or paused
if(MainActivity.getInstace()!=null)
MainActivity.getInstace().updateUI(textValue);
}
现在,对于我们需要在UIThread中运行更新的部分,MainActivity的updateUI方法将调用片段更新方法。
public void updateUI(final String str) {
MainActivity.this.runOnUiThread(new Runnable() {
public void run() {
//use findFragmentById for fragments defined in XML ((SimpleFragment)getSupportFragmentManager().findFragmentByTag(fragmentTag)).updateUI(str);
}
});
}
最后一步是更新片段的文本字段
public void updateUI(String str){
tv_content.setText(str);
}
和宾果,完成了。我提到这个链接来解决我的问题。希望它能帮到别人。
![?](http://img1.sycdn.imooc.com/5458692c00014e9b02200220-100-100.jpg)
TA贡献1803条经验 获得超6个赞
用途runOnUiThread:
MainActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
// show alert
}
});
- 3 回答
- 0 关注
- 750 浏览
添加回答
举报