Android Preference Activity,点击listview项时显示edittext对话框

时间:2014-02-28 05:15:37

标签: android android-preferences preferenceactivity

如何制作包含listpreference的首选项活动,其中摘要将根据所选的listpreference项目进行更改,并且当某个列表项被录制时,它将显示一个编辑文本对话框,它也将成为摘要字符串值。

提前感谢。


根据要求,这里是我当前的代码

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
    <PreferenceCategory
        android:title="@string/pref_category_general"
        android:key="pref_category_general">
        <CheckBoxPreference
            android:key="pref_debug_mode"
            android:title="@string/pref_debug_mode"
            android:summary="@string/pref_debug_mode_summary"
            android:defaultValue="false" />
        <ListPreference
            android:dependency="pref_debug_mode"
            android:key="pref_remotehost"
            android:title="@string/pref_remotehost"
            android:dialogTitle="@string/pref_remotehost_dialog_title"
            android:entries="@array/pref_remotehost_entries"
            android:entryValues="@array/pref_remotehost_entries_values"
            android:defaultValue="@string/pref_remotehost_default" />
    </PreferenceCategory>
</PreferenceScreen>

和我的活动

public class SettingActivity extends SherlockPreferenceActivity implements View.OnClickListener {
private MainApplication G;
private SherlockPreferenceActivity me;
private Intent intent;

@Override
public void onCreate(Bundle bundle) {
    super.onCreate(bundle);
    this.G = ((MainApplication) getApplicationContext());
    assert this.G != null;
    super.onCreate(bundle);

    // Make sure we're running on Honeycomb or higher to use ActionBar APIs
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        // Show the Up button in the action bar.
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    }

    // Add a button to the header list.
    if (hasHeaders()) {
        Button button = new Button(this);
        button.setText("Some action");
        setListFooter(button);
        button.setOnClickListener(this);
    }

    PreferenceFragment prefFragment = new PreferenceGeneralFragment();
    FragmentManager fragmentManager = getFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    fragmentTransaction.replace(android.R.id.content, prefFragment);
    fragmentTransaction.commit();

    this.intent = getIntent();
    this.me = this;
}

@Override
protected void onResume() {
    super.onResume();
    // Set up a listener whenever a key changes
    getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}

@Override
protected void onPause() {
    super.onPause();
    // Unregister the listener whenever a key changes
    getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
}

@Override
public void onClick(View v) {
    /*
    switch (element.getId()) {
        default:
            return;
        case R.id.setting_cancel_config:
            onBackPressed();
            return;
        case R.id.setting_save_config:
            int i = this.modeSpinner.getSelectedItemPosition();
            boolean flag = true;
            if (i == 1) {
                flag = false;
            };
            MainApplication.setDeveloperMode(flag);
            MainApplication.setRemoteHost(this.remoteHostEdittext.getText().toString());
            SettingActivity.this.finish();
            onBackPressed();
            return;
    }
    */
}

@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {

}

/**
 * This fragment shows the preferences for the first header.
 */
public static class PreferenceGeneralFragment extends PreferenceFragment implements SharedPreferences.OnSharedPreferenceChangeListener{
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Make sure default values are applied.  In a real app, you would
        // want this in a shared function that is used to retrieve the
        // SharedPreferences wherever they are needed.
        //PreferenceManager.setDefaultValues(getActivity(), R.xml.preferences_general, false);

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

    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
        updatePrefSummary(findPreference(key));
    }

    private void initSummary(Preference p) {
        if (p instanceof PreferenceCategory) {
            PreferenceCategory pCat = (PreferenceCategory) p;
            for (int i = 0; i < pCat.getPreferenceCount(); i++) {
                initSummary(pCat.getPreference(i));
            }
        } else {
            updatePrefSummary(p);
        }
    }

    private void updatePrefSummary(Preference p) {
        if (p instanceof ListPreference) {
            ListPreference listPref = (ListPreference) p;
            p.setSummary(listPref.getEntry());
        }
        if (p instanceof EditTextPreference) {
            EditTextPreference editTextPref = (EditTextPreference) p;
            p.setSummary(editTextPref.getText());
        }
    }
}

}

我不知道从哪里开始

0 个答案:

没有答案