0

preferenceActivity를 확장하는 활동을 만들었습니다. 해당 활동에서 항목 목록을 보여주는 사용자 정의 대화 상자를 열었습니다. listview에서 항목을 클릭 할 때마다 대화 상자가 닫힙니다. 그 당시에는 SharedPreference에 선택한 항목을 저장하여 응용 프로그램에서 해당 항목을 가져 오려고합니다.사용자 지정 대화 상자에서 SharedPreference 사용

하지만 내 문제는 내가 선택한 항목을 SharedPreference에 어떻게 저장합니까 ??

다음 번에 내 응용 프로그램을 열면 이전에 선택된 항목을 다시 검색 할 수 있습니다.

public class SettingsActivity extends PreferenceActivity implements OnSharedPreferenceChangeListener 
{ 
    SharedPreferences myprefs; 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     //setContentView(R.layout.settings); 
     addPreferencesFromResource(R.xml.prefs); 

     PreferenceManager.getDefaultSharedPreferences(this).registerOnSharedPreferenceChangeListener(this); 

     Preference prefereces=findPreference("alertdialog_Font_Style"); 
     prefereces.setOnPreferenceClickListener(new OnPreferenceClickListener() { 

      public boolean onPreferenceClick(Preference preference) { 
       // TODO Auto-generated method stub 
       DialogFontStyle objdialog = new DialogFontStyle(SettingsActivity.this,R.style.CustomDialogTheme); 
       objdialog.show(); 
       return true; 
      } 


     }); 
    } 

여기 내 클래스는 대화를위한 것입니다 :

public class DialogFontStyle extends Dialog { 

    public DialogFontStyle(Context context, int theme) { 
     super(context, theme); 
     // TODO Auto-generated constructor stub 
     this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
     this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); 

     setContentView(R.layout.dialog_layout); 

     final String[] sizeType = new String[] {"a" , "b" , "c" , "d"};  

      final ListView lst = (ListView)findViewById(android.R.id.list); 

      ArrayAdapter<String> adapter = new ArrayAdapter<String> (context,android.R.layout.simple_list_item_1,sizeType);     
     lst.setAdapter(adapter); 

      lst.setOnItemClickListener(new OnItemClickListener() { 
       public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
         long arg3) { 
        // TODO Auto-generated method stub 

        dismiss(); 
       } 
      }); 
    } 
} 

나에게 sharedpreference에 데이터를 저장하는 몇 가지 솔루션을 제공하십시오

여기 PreferenceActivity를 내 코드입니다. 고맙습니다.

+0

에서 시작하십시오. 나는 며칠 전에 작성한 것보다 더 명확하지 않습니다 : http://stackoverflow.com/questions/13523823/listview- item-click-open-custom-dialog-with-another-custom-listview/13526006 # 13526006. 그 모범을 보지 못하는 것이 있습니까? – mango

+0

그것은 zanky 해결 되었습니까? –

답변

0

환경 설정이 코드를 사용하여 공유 할 뭔가를 쓰기합니다. 또는 귀하의 대화 내용이 귀하의 활동 내에 있다면 SettingsActivity.this을 사용하거나 mContext 클래스를 만들고 onCreate()

+0

하지만이 코드는 어디에 써야합니까? – zanky

+0

대화 상자에서 'onItemClicked()' –

+0

Ohk. 나는 시도 할 것이다. – zanky

0

당신은 몇 가지 옵션이 있습니다

  • 대신 사용자 정의 대화 상자를 만드는, 당신은 그것의 성상이나 동작을 사용자 정의 할 ListPreference 클래스를 확장 할 수

    ,하지만 settings screens에 사용되는 기본 메커니즘에 의존. 저장은 ListPreference 수퍼 클래스에 의해 관리됩니다.

  • Context.getSharedPreferences() 메소드를 호출하는 공유 환경 설정을 가져 와서 환경 설정을 수동으로 저장할 수 있으며 Editor을 가져 와서 공유 환경 설정에 값을 입력하고 변경 사항을 커밋 할 수 있습니다.

이전에 저장된 항목을 검색하려면 SharedPreferences 개체를 다시 얻고 원하는 get ..() 메서드를 호출하여 이전에 저장된 키를 가져와야합니다.

SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences(mContext); 
SharedPreferences.Editor editor = mPrefs.edit(); 
editor.putBoolean(KEY, VALUE); 
editor.commit(); 

mContext 당신의 활동이나 응용 프로그램이 아닙니다 대화의 맥락해야한다 :

+0

listpreference를 확장하고 목록을 작성하는 방법에 대한 아이디어를 좀주세요. – zanky

+0

http://developer.android.com/guide/topics/ui/settings.html#Custom에서 살펴볼 수 있습니다. 그러나 텍스트 문자열 목록 만 필요하면 ListPreference 자체를 사용할 수 있습니다. 그런 다음 표시 할 지역화 된 문자열과 각 문자열과 연관된 값을 지정할 수 있습니다. – Jorge

관련 문제