我想在首选项屏幕的底部添加几个按钮,用于设置默认值和还原默认值。 This的答案不涵盖如何使用PreferenceFragment进行此操作。建议使用什么方法来完成此任务。

加载首选项 fragment 的 Activity :

public class SettingsActivity extends Activity {

    @Override
    public void onCreate( Bundle savedInstanceState) {

        super.onCreate( savedInstanceState);

        // load up the preferences fragment
        getFragmentManager().beginTransaction().replace( android.R.id.content, new PrefsSettingsFragment()).commit();
    }
}

PreferenceFragment实现:
public class PrefsSettingsFragment extends PreferenceFragment {

    @Override
    public void onCreate( Bundle savedInstanceState) {

        super.onCreate( savedInstanceState);

        addPreferencesFromResource( R.xml.preferences);
    }
}

preferences.xml:
<?xml version="1.0"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">

    <EditTextPreference android:key="edit_text_preference_server_address" android:title="@string/preference_server_address"/>
    <SwitchPreference android:key="switch_preference_bat" android:title="@string/preference_bat"/>
    <SwitchPreference android:key="switch_preference_comm" android:title="@string/preference_comm"/>
    <SwitchPreference android:key="switch_preference_dev_mode" android:title="@string/preference_dev_mode" android:defaultValue="true"/>

</PreferenceScreen>

最佳答案

我遇到了同样的问题,并且找到了解决此问题的方法。

使用给定的LayoutInfalter by参数覆盖PreferenceFragment中的onCreateView方法,以创建您自己的 View ,然后返回此 View 。

这是我的代码。我希望这会有所帮助

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // TODO Auto-generated method stub

        View v = inflater.inflate(R.layout.set_alarm, null);

        Button save = (Button)v.findViewById(R.id.save);
        Button revert = (Button)v.findViewById(R.id.revert);
        Button delete = (Button)v.findViewById(R.id.delete);

        save.setOnClickListener(this);
        revert.setOnClickListener(this);
        delete.setOnClickListener(this);

        if(mId == -1){
            delete.setEnabled(false);
        }

        return v;
    }

关于android - 将按钮添加到PreferenceFragment,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12305563/

10-11 15:06