[英]Android: Preference Fragment with a Navigation Drawer's Fragment
嗨,我有一個已經使用導航抽屜的Android應用程序。 我的MainActivity擴展了Fragment Activity ,我的SettingFragment擴展了PreferenceFragment
設置片段 :
public class SettingsFragment extends PreferenceFragment {
public SettingsFragment() {}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Load the preferences from an XML resource
addPreferencesFromResource(R.xml.prefs);
}
}
和我的MainActivity :
PreferenceFragment preferenceFragment = new SettingsFragment();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.add(android.R.id.content, preferenceFragment); // I'm getting an error here should be Fragment not PreferenceFragment
ft.commit();
我如何提交或轉到SettingsFragment()?
用一個簡單的片段包裝你當前的PreferenceFragment,它注意到但是打開prefenceFragment,如下所示
public class SettingsActivity extends Fragment {
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
getActivity().getFragmentManager().beginTransaction()
.replace(android.R.id.content, new MyPreferenceFragment())
.commit();
}
private class SettingsFragment extends PreferenceFragment {
public SettingsFragment() {}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Load the preferences from an XML resource
addPreferencesFromResource(R.xml.prefs);
}
}
}
這對我有用。 請記住,此代碼適用於api leval 11及更高版本。
在Activity中使用此代碼添加Fragment。
android.app.Fragment infoFragment = new InfoFragment();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.add(android.R.id.content, infoFragment);
ft.commit();
而您的PreferenceFragment類將如下所示。
public class InfoFragment extends PreferenceFragment
{
/**
* The fragment argument representing the section number for this
* fragment.
*/
private static final String ARG_SECTION_NUMBER = "section_number";
/**
* Returns a new instance of this fragment for the given section
* number.
*/
public static android.app.Fragment newInstance(int sectionNumber)
{
InfoFragment fragment = new InfoFragment();
Bundle args = new Bundle();
args.putInt(ARG_SECTION_NUMBER, sectionNumber);
fragment.setArguments(args);
return fragment;
}
public InfoFragment()
{
}
}
這個怎么樣:
Fragment preferenceFragment = new SettingsFragment();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.add(android.R.id.content, preferenceFragment);
ft.commit();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.