【问题标题】:Using AsyncTask in PreferenceFragment在 PreferenceFragment 中使用 AsyncTask
【发布时间】:2015-08-31 01:45:23
【问题描述】:

我正在尝试创建一个共享首选项以将一些身份验证信息保存到第三方服务。在我的preferences.xml 中有一个登录名和密码字段,但我想在编辑时检查这些值是否有效(验证)。什么是好方法?

到目前为止,我有这个:

创建时

findPreference("sync_service_enabled").setOnPreferenceChangeListener(this);
findPreference("sync_service_user").setOnPreferenceChangeListener(this);
findPreference("sync_service_pwd").setOnPreferenceChangeListener(this);

我的听众

public boolean onPreferenceChange(Preference preference, Object newValue) {
    if (preference.getKey().contains("sync_service")){
     new AuthenticationRemoteAsyncTask(this.getActivity(), user, password, service).execute();
    }
    return true;

我还需要保存远程服务生成的令牌,所以我需要等待 aynstask 完成。

有什么建议吗?

【问题讨论】:

    标签: android android-asynctask sharedpreferences preferencefragment


    【解决方案1】:

    我解决了创建自定义对话框首选项的问题。我替换了 onclicklistener 上的肯定按钮,因此它不会自动关闭对话框并启动我的远程任务。 asynctask 将在成功后通知我的偏好对话框,然后我才关闭对话框。

    代码

    @Override
    protected void showDialog(Bundle state) {
        super.showDialog(state);
        ...
        positiveButton.setOnClickListener(this);
        negativeButton.setOnClickListener(this);
    }
    

    点击处理程序

    public void onClick(View view){
        this.result = null;
        if(view.getId() == positiveButton.getId()) {
            String password = textPassword.getText().toString();
            String user = textLogin.getText().toString();
    
            new AuthenticationTask(getContext(),user, password)
                .notify(this).execute();
        }else{
            alertDialog.dismiss();
        }
    }
    

    关闭前检查结果

    @Override
    protected void onDialogClosed(boolean positiveResult) {
        super.onDialogClosed(positiveResult);
    
        if (result != null) {
            SharedPreferences.Editor editor = getEditor();
            editor.putString("sync_service_token",result);
            editor.commit();
        }
    }
    

    AuthenticationTask 是一个自定义类,它封装了所有异步内容并调用通知方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多