Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在微调器中显示选项,当选中该选项时,将其另存为整数变量?_Java_Android_Arrays_String_Spinner - Fatal编程技术网

Java 如何在微调器中显示选项,当选中该选项时,将其另存为整数变量?

Java 如何在微调器中显示选项,当选中该选项时,将其另存为整数变量?,java,android,arrays,string,spinner,Java,Android,Arrays,String,Spinner,我正在开发一款帮助租赁业务的应用程序。我有一个微调器,从数组中提取内容 从datalist.xml: <string-array name="dur"> <item>@string/dur1</item> <item>@string/dur2</item> <item>@string/dur3</item> <item>@string/dur4</item>

我正在开发一款帮助租赁业务的应用程序。我有一个微调器,从数组中提取内容

从datalist.xml:

<string-array name="dur"> 
    <item>@string/dur1</item>
    <item>@string/dur2</item>
    <item>@string/dur3</item>
    <item>@string/dur4</item>
    <item>@string/dur5</item>
    <item>@string/dur6</item>
    <item>@string/dur7</item>
    <item>@string/dur8</item>
    <item>@string/dur9</item>
    <item>@string/dur10</item>
    <item>@string/dur11</item>
</string-array> 

@字符串/dur1
@字符串/dur2
@字符串/dur3
@字符串/dur4
@字符串/dur5
@字符串/dur6
@字符串/dur7
@字符串/dur8
@字符串/dur9
@字符串/dur10
@字符串/dur11
strings.xml:

<string name="dur1">Half hour</string>
<string name="dur2">1 hour</string>
<string name="dur3">2 hours</string>
<string name="dur4">3 hours</string>
<string name="dur5">4 hours</string>
<string name="dur6">5 hours</string>
<string name="dur7">6 hours</string>
<string name="dur8">Over night</string>
<string name="dur9">24 hours</string>
<string name="dur10">Week</string>
<string name="dur11">Month</string>
半小时
1小时
2小时
3小时
4小时
5小时
6小时
通宵
24小时
周
月
java中的微调器代码:

Spinner spinner = (Spinner) findViewById(R.id.spinnerDuration);     
    ArrayAdapter <CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.dur, android.R.layout.simple_spinner_item);     
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    spinner.setAdapter(adapter);        
    spinner.setOnItemSelectedListener(
        new OnItemSelectedListener() {
        public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
            int index = arg0.getSelectedItemPosition();
            // storing string resources into Array 
            dur = getResources().getStringArray(R.array.dur);
        }       
        public void onNothingSelected(AdapterView<?> arg0) { 
            // do nothing
        }
    }
);
Spinner Spinner=(Spinner)findViewById(R.id.spinnerDuration);
ArrayAdapter=ArrayAdapter.createFromResource(这个,R.array.dur,android.R.layout.simple\u微调器\u项);
setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
旋转器。设置适配器(适配器);
spinner.setOnItemSelectedListener(
新建MSelectedListener(){
已选择公共视图(AdapterView arg0、视图arg1、内部arg2、长arg3){
int index=arg0.getSelectedItemPosition();
//将字符串资源存储到数组中
dur=getResources().getStringArray(R.array.dur);
}       
无选择的公共无效(AdapterView arg0){
//无所事事
}
}
);
我如何设置它,以便当用户从微调器中选择一个选项时,它将该选项保存为一个整数变量,反映小时数,然后可用于此应用程序的其他部分


例如,有人选择“3小时”,它将名为“durnumb”的变量保存为3。或者有人选择“Week”并将durnum的值保存为168(24小时x7天)

最简单的方法就是这样做:

公共静态final int[]数组=新int[]{1,2,4,6等..}


并按位置获取值。

将字符串另存为共享首选项,然后在应用程序中的任何位置再次检索该字符串

public class PreferencesData {

    public static void saveStringAsInt(Context context, String key, String value) {
        SharedPreferences sharedPrefs = PreferenceManager
                .getDefaultSharedPreferences(context);
        try {
            int intValue = Integer.parseInt(value);
            sharedPrefs.edit().putInt(key, intValue).commit();
        } catch (NumberFormatException e) {
            Log.e("PreferencesData", "Unable to parse to int: " + value)
        }
    }

    public static int getInt(Context context, String key, int defaultValue) {
        SharedPreferences sharedPrefs = PreferenceManager
                .getDefaultSharedPreferences(context);
        return sharedPrefs.getInt(key, defaultValue);
    }
}
用法:

// save
// do string manipulation before parsing e.g "weeks" = "168" or "3 hours" = "3" (for example substring away first encounter of whitespace)
PreferencesData.saveStringAsInt(context, "weeks", "25");
// retrieve
int weeks = PreferencesData.getInt(context, "weeks", -1);
至于把“三个星期”或“三个小时”翻译成“三个小时”,我不能给出建议,因为这完全取决于你的需要。对于每个用例,这应该是一个单独的方法


没有理由不将转换直接转换为整数并将其传递给PreferencesData.saveInt()之类的方法,但您的问题似乎集中在字符串值上,这就是为什么它最容易从字符串转换成整数的方法。否则,如果您遇到问题,请向我们报告。