SharedPreferences - 格式化字符串警告

时间:2017-08-03 12:12:42

标签: java android xml android-activity sharedpreferences

我使用 SharedPreferences 来存储三个变量。

vib_a_strength_shared, vib_b_strength_shared, vib_c_strength_shared

我的onCreate方法如下所示:

public class SettingsActivity extends MainActivity {

private SharedPreferences sharedPreferences;
private SharedPreferences.Editor editor;

private static int vib_a_strength;
private static int vib_b_strength;
private static int vib_c_strength;

@Override
protected void onCreate(Bundle savedInstanceState) {
    sharedPreferences = this.getSharedPreferences(
            "de.somecode.bachelorarbeit", Context.MODE_PRIVATE);
    editor = sharedPreferences.edit();
    editor.apply();
    super.onCreate(savedInstanceState);
    setContentView(R.layout.settings_screen);
    checkConnection();
    back();
    vib_a_listener();
    vib_b_listener();
    vib_c_listener();
}

然后我有三个等效的方法,如:

    private void vib_a_listener() {
    vib_a_strength = sharedPreferences.getInt(getString(R.string.vib_a_strength_shared), 120);
    final TextView vib_a_text_view = (TextView) findViewById(R.id.vib_a_strength);
    vib_a_text_view.setText(getString(R.string.strength_text, vib_a_strength));
    SeekBar vib_a_seekBar = (SeekBar) findViewById(R.id.vib_a_seek_bar);
    vib_a_seekBar.setMax(255);
    vib_a_seekBar.setProgress(vib_a_strength);
    vib_a_seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            vib_a_text_view.setText(getString(R.string.vib_a_progress, progress));
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {

        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
            vib_a_strength = seekBar.getProgress();
            editor.putInt(getString(R.string.vib_a_strength_shared), vib_a_strength);
            editor.commit();
        }
    });
}

一切正常,三个SeekBar状态都正确更新,但是当我检查代码时出现警告。

它说:格式化字符串''vib_a_strength_shared''没有引用带编号的参数[1],  格式化字符串''vib_b_strength_shared''没有引用带编号的参数[1,2],  格式化字符串''vib_c_strength_shared''未引用带编号的参数[1,2,3]

我的strings.xml如下所示:

<string name="vib_a_strength_shared">%2$d</string>
<string name="vib_b_strength_shared">%3$d</string>
<string name="vib_c_strength_shared">%4$d</string>

我知道正确的方法是将%1 $ d作为占位符,但如果我将%1 $ d放在这三个字符串名称中,则SeekBar值仅设置为最后一次更改的值。 而不是三个不同的价值观。

我希望你能帮我解决这个格式化字符串值警告。

非常感谢。

0 个答案:

没有答案