【发布时间】:2023-03-10 16:33:01
【问题描述】:
我有一个闹钟设置,这部分工作正常。收到警报后,我将字符串设置为与警报一起保存的消息。但是当我在 UI 上显示这个字符串时,它没有设置。
这是显示将显示字符串的 UI 的第一个代码:
public class ShowAlm extends Activity {
private static String MessStr="ZZZ";
public static void setMessStr(String messStr) {
MessStr = messStr;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.showalm);
Toast.makeText(this,"Message " + MessStr, Toast.LENGTH_SHORT).show();
}
然后为了在没有警报的情况下对其进行测试,我在另一个类上放了一个按钮以在上面调用,一切都按预期工作:
btnplot.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
ShowAlm.setMessStr("AAA");
Intent intent1 = new Intent(context, ShowAlm.class);
intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
context.startActivity(intent1);
//TestAlarm();
//Intent intent = new Intent(v.getContext(), AutoComplete4.class);
// startActivity(intent);
}
});
这就是问题所在,与上面按钮相同的代码但在接收器中不起作用。字符串未设置。
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
try {
Bundle bundle = intent.getExtras();
String message = bundle.getString("alarm_message");
System.out.println("Message = " + message);
ShowAlm.setMessStr("AAA");
Intent intent1 = new Intent(context, ShowAlm.class);
intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
context.startActivity(intent1);
} catch (Exception e) {
}
}
因此,当显示上面的第二个代码时,MessStr 是默认值。我也尝试将“AAA”编码为字符串,但这没有帮助。
所以最终结果是日志显示字符串在那里,但是当 UI 显示时,字符串是默认的。
想法?
【问题讨论】: