2012-06-21 4 views
0

SDK를 사용하여 Sony Smartwatch 용 앱을 쓰고 있습니다. 다음은 주요 활동의 일부 :환경 설정을 클릭 할 때까지 공유 환경 설정이 적용되지 않습니다.

class SmartTickerActivity extends ControlExtension { 
    private Handler mHandler; 

    SmartTickerActivity(final String hostAppPackageName, final Context context, Handler handler) { 
     super(context, hostAppPackageName); 

     if (handler == null) { 
      throw new IllegalArgumentException("handler == null"); 
     } 

    } 

    @Override 
    public void onStart() { 
     //do some stuff 

     PreferenceManager.setDefaultValues(mContext, R.xml.preference, false); 
    } 

문제는 저장된 환경 설정 때 Smartwatch를 응용 프로그램 출시에 적용되지 않는 것입니다. XML의 기본 환경 설정 값도 없습니다. 그러나 휴대 전화에서 앱의 환경 설정 중 하나를 클릭하면 저장된 기본 설정 값이 즉시 Smartwatch에 적용됩니다.

주 클래스에는 onCreate() 메서드가 없으므로 루프가 발생합니다. 문제가 잘 소니 SDK와 전혀 상관없는 수 있도록

public class MyPreferenceActivity extends PreferenceActivity { 

    private OnSharedPreferenceChangeListener mListener = new OnSharedPreferenceChangeListener() { 

     public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { 
      Preference pref = findPreference(key); 

      if (pref instanceof ListPreference) { 
       ListPreference listPref = (ListPreference) pref; 
       pref.setSummary(listPref.getEntry().toString()); 
      } 

      if (pref instanceof EditTextPreference) { 
       EditTextPreference editTextPref = (EditTextPreference) pref; 
       pref.setSummary(editTextPref.getText().toString()); 
      } 

     } 

    }; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    // Load the preferences from an XML resource 
    addPreferencesFromResource(R.xml.preference); 

    setSummaries(); 

    setTypeface(SmartTickerActivity.mainLayout); 

    if (previewLayout != null) setTypeface(previewLayout); 

    // Handle read me 
    Preference readMe = findPreference(getText(R.string.preference_key_read_me)); 
    readMe.setOnPreferenceClickListener(new OnPreferenceClickListener() { 

     public boolean onPreferenceClick(Preference readMe) { 
      showDialog(DIALOG_READ_ME); 
      return true; 
     } 
    }); 

    // Handle about 
    Preference about = findPreference(getText(R.string.preference_key_about)); 
    about.setOnPreferenceClickListener(new OnPreferenceClickListener() { 

     public boolean onPreferenceClick(Preference about) { 
      showDialog(DIALOG_ABOUT); 
      return true; 
     } 
    }); 

    // Handle preview 
     Preference preview = findPreference(getText(R.string.preference_key_preview_dialog)); 
     preview.setOnPreferenceClickListener(new OnPreferenceClickListener() { 

      public boolean onPreferenceClick(Preference preview) { 
       showDialog(DIALOG_PREVIEW); 
       return true; 
      } 
     });  

    } 

나는 안드로이드 개발 오히려 경험이있어 :

다음은 환경 활동의 일부입니다. 누구든지 도와 줄 수 있습니까?

답변

2

처음으로 PreferenceActivity가 표시 될 때까지 공식 샘플 확장의 기본 설정이로드되지 않습니다. 환경 설정에 액세스 할 때 올바른 기본값을 사용하면 문제가되지 않습니다.

확장 프로그램을 처음 시작할 때 환경 설정을로드하려면 android.app.Application 클래스와 onCreate 메소드를 확장 할 수 있습니다. 예를 들어

:

public class MySmartWatchApplication extends Application { 
    @Override 
    public void onCreate() { 
     super.onCreate(); 
     PreferenceManager.setDefaultValues(this, R.xml.app_preferences, false); 
    } 
} 
+0

감사합니다! 내가 원하는대로 작동합니다. 내 새 응용 프로그램 클래스 이름을 내 매니페스트의 부분에 추가 했으므로 이제는 응용 프로그램 인스턴스의 컨텍스트를 잡아내어 어떤 방법 으로든 내 기본 설정을 가져올 수 있습니다. 완전한! – NumberElevenRoad

관련 문제