加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Android BroadcastReceiver onReceive更新MainActivity

发布时间:2020-12-14 05:24:11 所属栏目:Java 来源:网络整理
导读:在MainActivity中,我有一个TextView:textV1.我还在MainActivity中有一个方法来更新该文本视图: public void updateTheTextView(final String t) { MainActivity.this.runOnUiThread(new Runnable() { public void run() { TextView textV1 = (TextView) fi
在MainActivity中,我有一个TextView:textV1.我还在MainActivity中有一个方法来更新该文本视图:
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) {

        }           
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读