2

Google 드라이브 SDK를 사용하여 앱을 작성하려고합니다. PreferenceActivity에서 Preference 객체를 사용하여 사용자가 파일을 업로드 할 Google 계정을 선택할 수있게하고 싶습니다. 저는 EditTextPreference를 사용하여 계정 선택기 인 텐트를 시작하려고했습니다. 그것은 작동합니다. 그러나 계정을 선택하면 EditText 대화 상자가 나타납니다. 대화 상자를 비활성화 할 수 있습니까? 아니면 잘못된 방향으로 가고 있습니까?EditTextPreference에서 대화 상자를 사용 중지하고 실행 의도를 대신 입력하십시오.

당신이 EditTextPreference 대신 기본 설정을 사용한다를 제외하고 당신은 올바른 최선을 다하고 있습니다

public static class PrefsFragment extends PreferenceFragment{ 

@Override 
public void onCreate(Bundle savedinstancestate) { 
    GoogleAccountCredential credential = GoogleAccountCredential.usingOAuth2(getActivity().getApplicationContext(), Arrays.asList(DriveScopes.DRIVE)); 
    EditTextPreference acctValue = (EditTextPreference)findPreference(getString(R.string.key_upload_acct)); 
    acctValue.setOnPreferenceClickListener(new OnPreferenceClickListener(){ 

    @Override 
    public boolean onPreferenceClick(Preference preference) { 
     startActivityForResult(credential.newChooseAccountIntent(), 1); 
     return false; 
    }    
    }); 
} 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
super.onActivityResult(requestCode, resultCode, data); 
    if (resultCode == RESULT_OK && data != null){ 
     String accountName = data.getStringExtra(AccountManager.KEY_ACCOUNT_NAME); 
     acctValue.setSummary(accountName); 
     acctValue.setText(accountName); 
    } 
} 

답변

2

preferences.xml로

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" > 
    <PreferenceCategory 
    android:title="@string/title_upload_category"> 
    <EditTextPreference 
     android:title="@string/title_upload_acct" 
     android:key="@string/key_upload_acct"/> 
    </PreferenceCategory> 
</PreferenceScreen> 

PrefsFragment. 그러면 대화 상자가 나타나지 않고 onPreferenceClickListener를 설정할 때 환경 설정의 기능이 처리됩니다.

+0

감사합니다. (나는 실제로 당신이 묘사 한 것을 정확하게 할 것이라는 의견을 입력 할 계획이었습니다. 그것이가는 것이 옳은 길인 것을 기쁘게 생각합니다.) 한 가지 더 질문. Preference.setText 메서드가 없기 때문에 SharedPreferences.Editor.putString을 사용하여 환경 설정을 저장하는 처리를 처리하고있었습니다. 그 맞습니까? – Paul

+1

맞습니다. 환경 설정을 수동으로 설정해야합니다. – athor