gpt4 book ai didi

java - 更改 BroadcastReceiver 中的变量

转载 作者:行者123 更新时间:2023-12-01 19:33:19 26 4
gpt4 key购买 nike

我想更改 BroadcastReceiver 的变量。不幸的是,每次我尝试访问该应用程序时都会崩溃。

这是一个例子:

public class MainActivity extends AppCompatActivity {

protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

findViewById(R.id.buttonAlarm).setOnClickListener(new View.OnClickListener() {
setAlarm();
});
}

public void setAlarm(){
Calendar calendar = Calendar.getInstance();
calendar.set(datePicker.getYear(),datePicker.getMonth(),datePicker.getDayOfMonth(),timePicker.getCurrentHour(),timePicker.getCurrentMinute(), 0);
am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(this, MyAlarm.class);
pi = PendingIntent.getBroadcast(this, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);
am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), Interval*60000, pi);
}
}

这是扩展 BroadcastReceiver 的 MyAlarm.java 类:

public class MyAlarm extends BroadcastReceiver {
int RecordTimeMinutes;

public void onReceive(final Context context, Intent intent) {
new Handler().postDelayed(new Runnable() {
@Override
public void run(){
//do some stuff
}
}, RecordTimeMinutes * 60000);
}
}

所以基本上我想访问 MainActivity 类中 MyAlarm 类的 Variable RecordTimeMinutes。这可能吗?

最佳答案

对于您的用例,为什么不将 RecordTimeMinutes 的值保存到共享首选项键中?

这样您就可以从 Activity 和接收器访问它,没有任何问题。

除非将其设置为静态,否则可能无法直接访问 Activity 中的变量,而这是您不应该做的事情!

关于java - 更改 BroadcastReceiver 中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58794309/

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