【发布时间】:2014-06-17 20:11:48
【问题描述】:
在开发我的应用程序时,我在“修复错误”时遇到了一些问题
在我的 MainActivity 的 onCreate() 方法中,正在启动 1 个服务和 1 个活动。 他们收集数据(服务中的 3 个字符串,其他活动中的 1 个字符串),我使用 onAvitivityResult 方法来完成这项工作。因为我使用一个活动而不是单个服务,所以看起来一个窗口正在快速进出(服务和活动都运行 AsyncTasks),我不太喜欢这样。
我基本上已经重新编码了所有内容以适应一个服务中的所有内容,并将结果传递给另一个类,该类将字符串传递回 MainActivity。我正在使用默认预设(swipeViews),现在片段只显示我分配给它的字符串,很好,但是我的服务正在更新该字符串,但 textView 本身没有。
如何让我的 textView ("textView1") 刷新并显示新字符串 ("ClassC.datumh") 而无需重新创建整个 MainActivity?
这里只是输出方法的一个sn-p
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
TextView textView1 = (TextView) rootView.findViewById(R.id.section_label);
textView1.setText(ClassC.datumh); //some random string that comes out of the service
rootView.invalidate();
return rootView;
}
之前我曾经简单地重新创建 MainActivity,但如前所述,我不太喜欢由此创建的“弹出”效果..
【问题讨论】:
-
问题真的是
TextView没有更新还是static成员ClassC.datumh没有正确的值,或者Activity1 没有收到值已更新的通知? -
我相信该方法/活动没有通知该值已更新。编辑:即使它会收到通知并更改 textview 的值,textview 也不会自行更新,因此仍然显示旧字符串..
-
创建一个 TextView 的实例变量,并在 onActivityResult 从那里更改 TextView。 (将 TextView 带到 onCreateView 之外)
-
nonono 你不明白,我没有 onActivityResult 了,因为我现在完全依赖服务。但是,我的 textView 的实例变量是什么意思?
-
您的
Service是否改为发送Intent?您可以收到Intent作为事件。