繁体   English   中英

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

[英]Update main activity values from a different activity

我想在主活动视图中更新textview。

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

如果我尝试从主要活动中更新这些值,则可以正常工作,但是当我尝试从不同活动中进行更新时,应用程序将崩溃。

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

主要活动方法:

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

请帮忙

确实,对活动(或其他上下文)进行任何静态引用是一种不良做法。 活动被设计为彼此独立。

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

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

因此,每当您的“其他”活动需要调用update_counters时,它就会广播这种意图。 您以前的MainActivity应该注册以收听该广播,并根据需要更新UI。 最好的办法是,您可以拥有该活动的多个实例,或者也可以注册该广播的其他活动。

您的主要活动只有一个实例吗? 如果是这样,请将对它的静态引用存储在主活动类中,并在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();

这称为单例。 或有时是全球性的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM