Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从其他活动更新主活动值_Java_Android_Android Layout - Fatal编程技术网

Java 从其他活动更新主活动值

Java 从其他活动更新主活动值,java,android,android-layout,Java,Android,Android Layout,我想在我的主活动视图中更新textview 我有main.xml文件,其中包含主应用程序ascreen, 在该屏幕中,我有一个textview,我需要从另一个活动(类)不时更新它 如果我试图从主活动中更新这些值,它会工作得很好,但是当我试图从不同的活动中更新这些值时,应用程序会崩溃 这是主活动的方法,我需要知道如何从其他活动调用它 主要活动方式: public void update_counters(){ TextView sms_textview = (Tex

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

请帮助

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

这就是所谓的单身。或者,有时是全局的。

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


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

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

因此,每当您的“其他”活动需要调用update_计数器时,它就会转而广播这样的意图。您以前的
MainActivity
应该注册以收听该广播,并根据需要更新UI。最好的情况是,您可以有多个该活动的实例,或者其他可以注册到该广播的活动