2014-06-28 131 views
0

我一定错过了一些东西。在PreferenceActivity内部点击header时,是否有任何方法可以简单地推送新的片段(简单地称为标准Android片段)?当PreferenceHeader被点击时显示片段?

例如,我想,当用户点击显示我作为一个Fragment创建自定义数字选择器视图:

<header 
android:id="@+id/preferences_date_time" 
android:fragment="com.xxx.appname.view.settings.DateTimeFragment" 
android:icon="@drawable/menu_icon_date" 
android:title="@string/pref_date_time" > 
</header> 

这样我可以显示在应用程序的其它部分将该片段(作为Dialog,在Activity内等)。

片段被简单地定义:

public class DateTimeFragment extends Fragment 
{ 

    public DateTimeFragment() 
    {} 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    { 
     View view = inflater.inflate(R.layout.fragment_date_time, container); 

     return view; 
    } 
} 

注意的是,这里的关键,我的问题是,我只是想表明一个普通的旧片段时,头部被窃听,不属于任何偏好片段类型。

任何帮助,非常感谢!

回答

0

据我所知,在点击PreferenceHeader时无法显示任意Fragment

我做了什么,而不是为启动该托管我想显示该片段的活性:

<header 
    android:id="@+id/preferences_date_time" 
    android:icon="@drawable/menu_icon_date" 
    android:title="@string/pref_date_time" > 
    <intent 
     android:action="android.intent.action.MAIN" 
     android:targetClass="com.xxx.appname.view.settings.DateTimeActivity" 
     android:targetPackage="com.xxx.appname" /> 
</header> 

确保您Activity中列出您AndroidManifest.xml否则它将不会被发现:

<activity 
    android:name="com.xxx.appname.view.settings.DateTimeActivity" 
    android:label="@string/date_time_picker_title" 
    android:parentActivityName="com.xxx.appname.view.settings.SettingsActivity" 
    android:theme="@style/PreferencesTheme" > 
</activity> 

这样我就可以在我的设置菜单中使用我的Fragment,并在应用程序中需要其他任何地方。

相关问题