2013-02-11 4 views
6

개발중인 앱에 SherlockFragmentActivity 확장 활동이 있습니다. 나는 환경 설정 API를 사용하여 활동에 환경 설정을 쉽게 추가하고자한다. API 레벨 8 이상을 지원하고 싶으므로 클래스 SherlockPreferenceActivity에서 활동을 확장해야합니다.Android 프리젠 테이션 활동 및 대화 조각

문제는 활동에 대화 상자가 필요하다는 것입니다. 대화 상자는 SherlockDialogFragment까지 확장됩니다. 대화 상자의 show() 메서드는 두 개의 매개 변수, 즉 FragmentManager 개체와 String 태그를 필요로합니다.
FragmentManager 개체를 얻으려면, 나는 활동의 getSupportFragmentManager() 메서드를 호출하는 데 사용됩니다. 이 방법은 SherlockPreferenceActivity에서 누락되었습니다. 나는 getFragmentManager()를 사용하려하지만, Eclipse는

유형 DialogFragment의 방법 쇼 (FragmentManager, String)를 인수 (FragmentManager, 문자열)

어떻게 내가 보여줄 수에 대한 적용되지 않는 것을 말한다 대화 조각은 SherlockPreferenceActivity?

+0

나는 같은 문제가 있습니다. 지원 패키지에서 FragmentManager를 가져와야하지만 SherlockPreferenceActivity에는 그런 것이 없습니다. = ( –

+1

다른 방법으로 해결했습니다 동일한 패키지 아래에 다른 활동을 만듭니다 (이 새로운 활동을 매니페스트에 추가해야 함). SherlockPreferenceActivity를 확장하고 SharedPreferences.OnSharedPreferenceChangeListener 인터페이스를 구현합니다. 이해하기 위해 Android 개발자 사이트를 살펴보십시오. 이 활동을 작성하는 방법이 활동을 사용하여 사용자 기본 설정을 관리하십시오. 다른 활동에서 사용자가 설정 단추를 누르면 의도로 기본 활동을 시작하십시오. 기본 활동에서 PreferenceManager를 사용하여 설정을 읽을 수 있습니다. –

답변

0

PreferenceActivity 대신에 Shared Preferences을 사용해야합니다. 이러한 참조를 Activity로 확장하지 말고 별도의 도우미 클래스로 선언하십시오. 이렇게하면 사용자 정의 레이아웃을 유연하게 생성 할 수 있습니다.

예 :

public class SharePrefManager { 
    // Shared Preferences 
    SharedPreferences pref; 

    // Editor for Shared preferences 
    Editor editor; 

    // Context 
    Context _context; 

    // Shared pref mode 
    int PRIVATE_MODE = 0; 

    // Sharedpref file name 
    private static final String PREF_NAME = "selfhelppref"; 

    //Your configurable fields 
    public static final String KEY_PREF1 = "pref1"; 
    public static final String KEY_PREF2 = "pref2"; 
    public static final String KEY_PREF3 = "pref3"; 


    public SharePrefManager(Context context){ 
     this._context = context; 
     pref = _context.getSharedPreferences(PREF_NAME, PRIVATE_MODE); 
     editor = pref.edit(); 
    } 

    //Setter function for configurable field 
    public void setPref(String key, String value){ 
     editor.putString(key, value); 
    } 

    //Getter function for configurable field 
    public String getPref(String key){ 
      return editor.getString(key); 
    } 
} 

활동에 참조하기는

SharePrefManager SM = new SharePrefManager(this); 
SM.setPref(SM.KEY_PREF1, "name"); 
String value = SM.getPref(SM.KEY_PREF1); 
0

SherlockDialogFragment.getSherlockActivity().getSupportFragmentManager()를 사용해보십시오.

예 : mySherlockDialogFragment.show(mySherlockDialogFragment.getSherlockActivity().getSupportFragmentManager(), "my_tag");