2015-09-09 72 views
0

我已經創建了一個類PreferenceFragment以顯示我的應用程序首選項。它的工作原理,但我決定我應該讓片段出現在一個新的活動,使用戶可以退出它。現在,它只是交換到主要片段並顯示。我怎樣才能做一個顯示整個PreferenceFragment的活動? Fragment沒有定義佈局,因爲它是PreferenceFragment我有一個PreferenceFragment,我怎樣才能讓它成爲自己的活動?

回答

2

創建一個包含一個片段的新活動。在其中插入首選項片段。這裏是我在我的項目中使用的副本。

public class SettingsActivity extends Activity{ 

    public final static String SETTINGS_NATIVE_IGNORE = "pref_native_ignore"; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_settings); 
    } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     super.onCreateOptionsMenu(menu); 
     return true; 
    } 


    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     switch(id) 
     { 
      case android.R.id.home: 
       onBackPressed(); 
       return true; 
      case R.id.action_settings: 
       return true; 
      default: 
       return super.onOptionsItemSelected(item); 
     } 
    } 
} 

然後將XML它

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:baselineAligned="false" 
    android:id="@+id/container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="...SettingsActivity" 
    tools:ignore="MergeRootFrame" > 

<fragment 
android:id="@+id/preferences_fragment" 
android:name="...fragment.PreferencesFragment" 
tools:layout="@layout/fragment_preferences" 
android:layout_width="match_parent" 
android:layout_height="match_parent" /> 

</LinearLayout> 

最後喜好片段

public class PreferencesFragment extends PreferenceFragment { 


    public PreferencesFragment() { 
     // Required empty public constructor 
    } 

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

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