更新其他活动的主要活动值

时间:2011-02-06 15:47:10

标签: java android android-layout

我想在主要活动视图中更新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));
    }

请帮助

3 个答案:

答案 0 :(得分:1)

确实对活动(或其他上下文)进行任何静态引用是一种不好的做法。活动旨在相互独立。

您可以从使用startActivityForResult()方法启动的活动中收到结果,然后做出适当的反应。

答案 1 :(得分:0)

就像@Roman所说,从其他活动中触摸UI内容是一种不好的做法,而且活动应该是独立的。您可以做什么,稍微重新设计您的消息传递方法。一个可能是好的是使用广播接收器,它也保证了程序的更好的可扩展性。

因此,每当您的“其他”活动需要调用update_counters时,它就会转向广播此类意图。您之前的MainActivity应该注册以收听该广播,并根据需要更新UI。什么是最好的是你可以有几个该活动的实例,或其他可以注册到该广播的活动。

答案 2 :(得分:-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();

这称为单身人士。或者,有时候是全球性的。