2011-02-06 120 views
0

我想在我的主活动视图中更新textview。更新来自其他活动的主要活动值

我有main.xml文件,其中包含屏幕上的主应用程序ascreen, ,我有textview,我需要不时从另一个活动(类)更新。

如果我尝试从主要活动更新这些值,它会很好地工作,但是当我试图从不同的活动中完成时,应用程序会崩溃。

这里是主要活动的方法,我需要知道如何从其他活动调用它。

主要活动方式:

public void update_counters(){  
     TextView sms_textview = (TextView) findViewById(R.id.sms_textview); 
     sms_textview.setText(String.valueOf(sms_missed)); 
    } 

请帮助

回答

-2

有只有一个主活动的实例?如果是这样,请在主活动类中存储一个静态引用,并将其初始化为onCreate。然后有一个使用该参考获取到该实例的静态方法:

static MainActivity TheMainActivity; 

static public void update_counters() 
{ 
    TextView sms_textview = (TextView) TheMainActivity.findViewById(R.id.sms_textview); sms_textview.setText(String.valueOf(sms_missed)); 
} 

中其他活动:

MainActivity.update_counters(); 

这就是所谓的单。或者,有时候是全球性的。

1

事实上,对活动(或其他上下文)进行静态引用是一种不好的做法。活动被设计为相互独立。

您可以从使用startActivityForResult()方法启动的活动接收结果并进行适当的反应。

0

就像@罗曼说,从其他活动中触摸UI的东西是一种不好的做法,活动应该是独立的。你可以做什么,有点重新设计你的消息传递方法。一个可能是好的是使用广播接收器,它也保证了程序更好的可扩展性。

因此,无论何时您的'其他'活动需要调用update_counters,它都会转而广播这样一个意图。您以前的MainActivity应该注册才能收听该广播,并根据需要更新UI。最好的是,你可以有多个该活动的实例,或者可以注册到该广播的其他活动。

相关问题