gpt4 book ai didi

java - Android BroadcastReceiver onReceive 在 MainActivity 中更新 TextView

转载 作者:太空狗 更新时间:2023-10-29 23:01:03 25 4
gpt4 key购买 nike

在 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) {

}
}
}

关于java - Android BroadcastReceiver onReceive 在 MainActivity 中更新 TextView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22869928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com