2

Я пытаюсь создать приложение SettingsActivity и использую фрагмент, расширяющий PreferenceFragment для достижения этого. Моя активность отображается, а предпочтение - нет.Предпочтение не отображается - Фрагмент предпочтения

SettingsActivity.java

public class SettingsActivity extends ActionBarActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 


     getFragmentManager().beginTransaction() 
       .replace(android.R.id.content, new SettingsFragment()) 
       .commit(); 

} 

SettingsFragment.java

public class SettingsFragment extends PreferenceFragment { 



@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    addPreferencesFromResource(R.xml.pref); 
    Toast ts = Toast.makeText(getActivity(),"Working",Toast.LENGTH_SHORT); 
    ts.show(); 
} 

}

pref.xml

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> 
<CheckBoxPreference 
    android:key="@string/prefsync" 
    android:title="@string/pre_name" 
    android:summary="@string/summary" 
    android:defaultValue="true" /> 

</PreferenceScreen> 

enter image description here

ответ

3

Я была такая же проблема при тестировании на 1 Moto X телефон. Это то, что я закончил, и теперь он отлично работает: перед добавлением фрагмента я добавил пустой макет к параметру SettingsActivity.

public class SettingsActivity extends ActionBarActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 

     //Need to set layout to blank if we want to add fragments to it. 
     setContentView(R.layout.activity_settings); 

     getFragmentManager() 
       .beginTransaction() 
       .add(android.R.id.content, new SettingsFragment()) 
       .commit(); 
    } 

} 

Файл xml, который загружается для макета, представляет собой пустой макет, который обычно создает Android Studio. Похоже на это.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" 
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    tools:context="com.wordscroll.wordscroll.SettingsActivity"> 

</RelativeLayout> 
+0

Спасибо. Работала отлично. Я полагаю, что ActionBarActivity нуждается в представлении, над которым он может работать? – Bhargav

+0

@Bhargav, это мое предположение на данный момент. Если я найду лучшее решение или причину оригинальной проблемы, я дам вам знать. –

Смежные вопросы