2

Я пытаюсь написать приложение с помощью SDK Google Диска. Я хотел бы использовать объект Preference в PreferenceActivity, который позволяет пользователю выбрать учетную запись Google, к которой они хотят загружать файлы. Я пытаюсь использовать EditTextPreference, чтобы запустить намерение выбора учетной записи. Оно работает. Однако после выбора учетной записи появляется диалог EditText. Можно ли отключить диалог? Или я об этом ошибаюсь?Отключить диалог в EditTextPreference, Launch Intent Вместо

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

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

Вы делаете все правильно, за исключением вы должны использовать Выбираю вместо EditTextPreference. Тогда диалог не будет отображаться, и функциональность предпочтения будет обрабатываться вами, когда вы установите onPreferenceClickListener.

+0

Спасибо! (Я действительно планировал ввести комментарий, говоря, что я собираюсь сделать именно то, что вы описали. Рад слышать, что это правильный путь). Еще один вопрос. Я работал с сохранением предпочтений с помощью SharedPreferences.Editor.putString, так как нет метода Preference.setText. Это верно? – Paul

+1

Да, это правильно. Вам нужно будет настроить предпочтение вручную. – athor

 Смежные вопросы

  • Нет связанных вопросов^_^