当前位置: 首页 > 面试题库 >

Android BroadcastReceiver onReceive在MainActivity中更新TextView

况庆
2023-03-14
问题内容

在MainActivity中,我有一个TextView:textV1。我在MainActivity中也有一个更新该textview的方法:

public void updateTheTextView(final String t) {
    MainActivity.this.runOnUiThread(new Runnable() {
        public void run() {
            TextView textV1 = (TextView) findViewById(R.id.textV1);
            textV1.setText(t);
        }
    });
}

在BroadcasrReceiver中,我需要在MainActivity中更新textV1中的文本。

public class NotifAlarm extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
            // other things done here like notification

            // NEED TO UPDATE TEXTV1 IN MAINACTIVITY HERE
    }
}

如何才能做到这一点?BroadcastReceiver从服务运行。我无法更改此代码。我可以从onReceive()访问和更改MainActivity中的textV1吗?我尝试了很多事情,但都失败了。


问题答案:

在您的MainActivity初始化MainActivity类变量如下。

public class MainActivity extends Activity {
    private static MainActivity ins;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ins = this;     
    }

    public static MainActivity  getInstace(){
        return ins;
    }

    public void updateTheTextView(final String t) {
        MainActivity.this.runOnUiThread(new Runnable() {
            public void run() {
                TextView textV1 = (TextView) findViewById(R.id.textV1);
                textV1.setText(t);
            }
        });
    }
}


public class NotifAlarm extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        try {
            MainActivity  .getInstace().updateTheTextView("String");
        } catch (Exception e) {

        }           
    }
}


 类似资料:
  • 不确定是不是因为okhttp版本,但我尝试了2.3.0和3.4.0之间的几个不同版本,但都不起作用。 有什么想法吗?提前谢了。

  • 问题内容: 我已经使用JFreeChart创建了一个PieChart。我一辈子都无法弄清楚 图表创建后如何更新。是 创建全新图表的唯一方法吗? 问题答案: 如图所示在这里,你可以改变一个图表,它已经呈现后。在这种情况下,更新图表的数据模型 ,将遵循PieDataset侦听视图。在此相关示例中,按钮Action更新CategoryDataset。在MultiplePiePlot,您可以更新饼图的外观

  • 在更新到飘飘 2.8 之前 更新到飘飘 2.8 后: 如何更新minSdkVersion更高?我在任何地方都找不到目标“flutter.minSdkVersion”变量。

  • 我有一个工作飞溅 我想添加一些按钮,比如,等等 我是通过删除处理程序和,向xml添加按钮并像处理任何其他活动一样处理点击,并设置一个按钮来启动,即>在几秒钟内开始(加载1,2秒后)。 但是我想在中处理的加载时间, 我该怎么做? 下面是添加按钮后的示例

  • 我找到了一个很好的QRcode/条形码识别代码——它工作得很好,但是!它不停地工作。检测到的代码以条形码文本显示,但方法/proces/camera(initialiseDetectorsAndSources())仍在工作。我尝试了一些方法来阻止它,并找到了那个摄像源。release()在某种程度上起作用了:相机停止了,但我不确定探测器进程是否仍在后台某处运行?。然后,我添加了一个按钮,再次启动i

  • 问题内容: 我在使用React表单和正确管理状态时遇到麻烦。我有一个形式为模式的时间输入字段。初始值在中设置为状态变量,并从父组件传递。这本身工作正常。 当我想通过父组件更新默认的start_time值时,就会出现问题。更新本身通过发生在父组件中。但是在我的表单中,默认的start_time值从不更改,因为它仅在中定义一次。 我尝试过通过强制进行状态更改,该更改确实有效,但给了我错误。 所以我的问