8

Xin chào, tôi có một ứng dụng Android đã sử dụng Ngăn điều hướng. MainActivity My mở rộng Fragment Hoạt độngSettingFragment của tôi kéo dài PreferenceFragmentAndroid: Phân đoạn sở thích với phân đoạn của ngăn kéo điều hướng

Cài đặt Fragment:

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); 
    } 
} 

tôi 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(); 

Làm thế nào tôi có thể cam kết hoặc đi cho SettingsFragmen t()?

Trả lời

2

này Làm việc cho tôi. Chỉ cần nhớ rằng mã này sẽ hoạt động với mức api leval 11 trở lên.

Trong hoạt động, sử dụng mã này để thêm Phân đoạn.

android.app.Fragment infoFragment = new InfoFragment(); 
FragmentTransaction ft = getFragmentManager().beginTransaction(); 
ft.add(android.R.id.content, infoFragment); 
ft.commit(); 

Và tùy chọn ưu tiênPhiên bản của bạn sẽ giống như thế này.

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() 
    { 

    } 
} 
+0

tôi có vấn đề tương tự và tôi làm câu trả lời của bạn, nhưng tiếc là không có gì xảy ra. bạn có vui lòng trả lời tôi không? http: //stackoverflow.com/q/41290692/4568864 –

0

Làm thế nào về điều này:

Fragment preferenceFragment = new SettingsFragment(); 
FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
ft.add(android.R.id.content, preferenceFragment); 
ft.commit(); 
+0

.i có bán cùng một vấn đề và tôi làm câu trả lời của bạn, nhưng tiếc là không có gì xảy ra. bạn có vui lòng trả lời cho tôi không? http: //stackoverflow.com/q/41290692/4568864 –

12

Quấn PreferenceFragment hiện tại của bạn với một Fragment đơn giản mà không chú ý nhưng mở prefenceFragment như sau

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); 
     }  
    } 
} 
+0

tôi có vấn đề tương tự và tôi làm câu trả lời của bạn, nhưng tiếc là không có gì xảy ra. bạn vui lòng trả lời tôi không? http: //stackoverflow.com/q/41290692/4568864 –

Các vấn đề liên quan