2012-12-27 3 views
0

첫 번째 Android 앱을 개발 중입니다. 마법사를 사용하여 지금까지 제대로 작동하는 SettingsActivity를 만들었습니다. 이제 프로그래밍 방식으로 입력 필드를 변경하고 싶습니다. 기본적으로 입력 필드에 미리 설정하려는 문자열을 생성하고 있습니다.프로그래밍 방식으로 SettingsActivity 위젯의 텍스트 변경

이 내 입력 필드, 그것은 자동으로 생성 된 pref_general.xml에서 해당 항목의된다

<EditTextPreference 
     android:capitalize="words" 
     android:defaultValue="@string/pref_default_display_name" 
     android:inputType="textCapWords" 
     android:key="example_text" 
     android:maxLines="1" 
     android:selectAllOnFocus="true" 
     android:singleLine="true" 
     android:title="@string/pref_title_display_name" /> 

내 질문은 : 어떻게 내 코드에서이 입력 필드를 액세스 할 수 있습니까? 보통 내가

findViewById(R.string.pref_default_display_name); 

를 사용할 수

findViewById(R.*.*); 

내가 여기 가정하여 UI 요소를 요청하지만, 이것은 단지 내가 널 수 있습니다!

+0

'pref_title_display_name'이라는 이름의 문자열 리소스를 만들었습니까? – Eric

+0

R.java에있는 것이 있습니다 : public static final class string { // ... public static final int pref_title_display_name = 0x7f050007; } – bogus

+0

이 상수는 findViewById에 전달하는 인수에 해당하지만이 메서드는 여전히 null을 제공합니다. – bogus

답변

0

당신이 무슨 일을하는지 기반으로, 당신은 EditTextPreference 개체를 가져 findPreference()를 사용할 수 있습니다

EditTextPreference pref = myPrefGroup.findPreference("example_text"); 

이에서 View을 얻으려면 쉽지 않다, 종종 필요가 없습니다. getView()을 사용해 볼 수도 있지만 원하는 결과가 반환되거나 그렇지 않을 수도 있습니다. 그냥 EditTextPreference의 입력 값을 설정하려는 경우처럼

, 당신은 어떤 EditText와 그것에 setText()를 사용할 수 있습니다

EditTextPreference pref = myPrefGroup.findPreference("example_text"); 
pref.setText("Foo!"); 

당신은 다른 어떤 PreferenceEditTextPreference 수에 모습을 가질 수 제공되는 문서에서 수행 할 수 있지만 환경 설정 화면에서는 수행 할 수없는 작업이 있습니다. (그건 Android의 한계 일뿐입니다.)

+0

고마워요! 어디에서 findPreference (...)를 호출합니까? myPrefGroup이란 무엇입니까? 지금까지는 더 이상 사용되지 않는 메소드 만 발견했습니다.이 트릭은 조각 기반의 것일 수도 있습니다 – bogus

+0

['PreferenceGroup'] (http://developer.android.com/reference/android/preference/PreferenceGroup.html) 또는' PreferenceScreen', 둘 다'.findPreference()'메소드를 가지고있다. (또한 API 10과 11 사이에서 환경 설정이 변경되었으므로 다소 이상 할 수 있음을 명심하십시오.) – Eric

관련 문제