Android Studio 如何从strings.xml中的数组中按每天的顺序获取值?

vh0rcniy  于 2022-11-25  发布在  Android
关注(0)|答案(3)|浏览(152)

我想获取值 并设置这些值 到文本框。我可以得到值 从数组并在文本框中设置它们,但第二天的值保持不变。不设置数组中的下一个值?我该怎么办?
第一个

0aydgbwb

0aydgbwb1#

这很简单

Resources res = getResources();
String[] mornings = res.getStringArray(R.array.morning);

//then use mornings  as you use array.
lrpiutwd

lrpiutwd2#

String morning[] = getResources().getStringArray(R.array.morning);
bwitn5fc

bwitn5fc3#

// Solution
    SharedPreferences sharedPreferences = getSharedPreferences("my_preference", MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPreferences.edit();

    String currentDate = new SimpleDateFormat("dd-MMM-yyyy", Locale.getDefault()).format(System.currentTimeMillis());
    String[] msgArrays = getResources().getStringArray(R.array.morning);

    String savedDate = sharedPreferences.getString(DATE_KEY, "");
    int savedCounter = sharedPreferences.getInt(COUNTER_KEY, 0);

    // First time
    if (savedDate.isEmpty()) {
        editor.putInt(COUNTER_KEY, savedCounter);
        editor.putString(DATE_KEY, currentDate);
        editor.apply();
    } else if (!savedDate.equals(currentDate)) {
        // New date appears, update shared preference.
        savedCounter++;
        if (savedCounter < msgArrays.length) {
            editor.putInt(COUNTER_KEY, savedCounter);
            editor.putString(DATE_KEY, currentDate);
            editor.apply();
        }
    }
    binding.tvTitle.setText(msgArrays[savedCounter]);

在这段代码中,我将通过日期和计数器更新共享首选项。

**日期:**将保存该日期以用于下一个日期,如果这两者不匹配,则将使用计数器更新共享首选项。
**计数器:**字符串数组的位置。
重置:我添加了另一项检查,如果计数器到达数组末尾,它将重置为'0'

相关问题