gpt4 book ai didi

java - 通过方法调用增加变量值

转载 作者:行者123 更新时间:2023-12-02 04:07:03 26 4
gpt4 key购买 nike

我正在构建一个简单的小部件来每天显示一个数字。我初始化了一个名为 Counter 的类及其 getter 和 setter,并使用它们来增加值。但是,每次调用 onUpdate() 方法(30 分钟期间,小部件更新)时,该变量都会重置为 1。

public class WidgetProvider extends AppWidgetProvider {
Counter counter = new Counter();
//Create class counter in order to store global variable
//Constructor makes the counter value = 1
int k;
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {

for (int appWidgetId : appWidgetIds) {
k=counter.getI();
// k now equals to 1
Toast.makeText(context, "Widget has been updated! ", Toast.LENGTH_SHORT).show();
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
views.setCharSequence(R.id.button, "setText",""+k); //1
counter.increase(counter.getI());
//Log shows counter value = 2
appWidgetManager.updateAppWidget(appWidgetId, views);
}
}

您能帮我解决这个问题或建议其他方法吗? :( 非常感谢你们。

最佳答案

您永远不应该期望 AppWidgetProvider 中的实例变量是持久的。您的 AppWidgetProvider 很可能在更新后被破坏,并将在下次需要更新时重新创建。发生这种情况时,您将获得一个值为 1 的 Counter 的新副本。

如果您希望在小部件更新之间记住某个值,则应该将该值存储在持久存储中,例如 SharedPreferences。

https://developer.android.com/reference/android/content/SharedPreferences.html

关于java - 通过方法调用增加变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56708148/

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