2013-09-26 3 views
1

저는 렌탈 사업에 도움이되는 앱을 만들고 있습니다.옵션을 정수 변수로 저장하는 옵션을 회 전자에 표시하려면 어떻게합니까?

<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> 

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> 

스피너 코드 :

나는 그것이 배열 콘텐츠의에서 끌어 회 ... datalist.xml에서

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 
     } 
    } 
); 

어떻게 설정할 수 있습니까? 사용자가 회 전자에서 옵션을 선택하면 해당 옵션을 정수 varia로 저장합니다. 시간을 반영하여이 응용 프로그램의 다른 부분에서 사용할 수 있습니까? 예를 들어

는 ... 누군가가 "3시간"선택과는 3으로 'durnumb'라는 변수를 저장하거나 누군가가 "주"를 선택하고 168 (24의 X 칠일) 등 durnumb

답변

0
에 대한 값을 저장

가장 간단한 방법은 다음과 같이 수행하는 것입니다.

public static final int [] {1,2,4,6, etc ...};

및 위치별로 값을 가져옵니다.

2

문자열을 공유 환경 설정에 저장하고 앱의 어느 곳에서나 다시 검색하십시오.

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); 
    } 
} 

사용법 :

는 사용자의 요구에 매우 의존으로 "3", 내가 조언을 줄 수있는 주에서 번역 또는 "3시간"에 관해서는
// 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()와 같은 메소드로 전달되어서는 안되지만 변환에 편리 할 가능성이 큰 이유는 질문에 문자열 값에 초점을 맞춘 것처럼 보일 이유가 없습니다. 말하자면 String에서 Integer로 'on the fly'라고 말합니다.

+0

좋은 접근! – tony9099

+0

이것을 승인 된 해결책으로 표시하는 것을 고려하십시오. 그렇지 않으면 문제가 발생할 경우 다시보고하십시오. – cYrixmorten

관련 문제