2016-04-06 100 views
0

我正在编写一个Android应用程序,我需要显示一些非活动类的结果。 基本上我的应用程序获取当前的位置,活动和其他东西,并在那些我运行一些功能,例如,以检查用户是否曾在那个地方。 无论如何,一个intent会触发这些函数,并且在函数的结尾我想用这些函数的结果更新一个TextView。Android:从非活动类更新TextView

但是,除了MainActivity之外,它似乎并没有工作。我试着让TextView成为静态的,但这似乎不起作用,并且将结果返回给MainActivity也是不可能的,因为它不是直接从MainActivity调用的。

是否有一些关于如何解决这个问题的想法? 这是我的第一个android项目,所以还有很多我不知道的东西。谢谢!

+2

你能请问[mcve]你的问题?理想情况下,你不应该在View类之外更新TextView(例如Activity)中的定义 –

+0

非活动类是什么意思? – Pooya

回答

0

我不确切地知道你的代码是什么样的,但是你有一个模型类来保存你所有的数据(例如某种单例)吗?如果是这样,你可以保存更新的文本,然后在回调方法中更新TextView。

如果这不符合你正在做的,我会考虑重构你的代码,以便你想要的文本被发送回你的MainActivity。你提到该方法不是直接调用的,但是你的计算是否可以将文本传递给一个中间类,然后将它传递给你的MainActivity?

+0

谢谢大家迄今为止的答案! 我会尽力解释一些! 在我的MainActivity类中,我实例化了一些类,一分钟就获得某种信号(通过Intent)。例如一个GPS类,它获取当前位置。 onHandleIntent()然后从另一个调用中调用一个函数,它根据这些值进行一些计算(例如,以检查该人是否曾经在那个地方) 这个函数的结果是我想要显示的。 我希望这可以让它更清晰一些。我会张贴代码,但我真的不知道要发布什么.. – Leni

0

你不应该更新ui drom后台线程。 如果你想从后台线程使用处理程序,AsyncTask或使用其他一些线程概念来更新ui。

如果您想更新回回服务或广播接收器,例如UI收到内部broadcasrReceiver的的onReceive消息现在更新UI使用sendBroadcast和你的活动中registet动态广播接收器,然后更新