Android中Fragment子类及其PreferenceFragment的创建过程演示

Android中Fragment子类及其PreferenceFragment的创建过程演示,第1张

概述Fragment创建方式Fragment有两种使用方式:静态方式和动态方式。1.静态方式第一步:先定义一个Fragment子类

Fragment创建方式
Fragment有两种使用方式:静态方式 和 动态方式。
1. 静态方式
第一步:先定义一个Fragment子类。

public class ExampleFragment extends Fragment {  @OverrIDe  public VIEw onCreateVIEw(LayoutInflater inflater,VIEwGroup container,Bundle savedInstanceState) {    return inflater.inflate(R.layout.example_fragment,container,false);  }  }

说明:ExampleFragment是Fragment的子类,它的布局定义是example_fragment.xml文件。
第二步:定义Fragment子类对应的布局文件。

<?xml version="1.0" enCoding="utf-8"?><linearLayout 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:orIEntation="horizontal" >  <EditText androID:ID="@+ID/edit_message"    androID:layout_wIDth="0dp"    androID:layout_height="wrap_content"    androID:layout_weight="1"    androID:hint="@string/edit_message" />  <button    androID:layout_wIDth="wrap_content"    androID:layout_height="wrap_content"    androID:text="@string/button_send"    androID:onClick="sendMessage" /></linearLayout>

说明:上面是example_fragment.xml的内容。
第三步:在需要用到该Fragment的Activity对应的布局中使用该Fragment。
下面是引用Fragment的Activity的代码:

public class FragmentLayoutTest extends Activity{  /** Called when the activity is first created. */  @OverrIDe  public voID onCreate(Bundle savedInstanceState)  {    super.onCreate(savedInstanceState);    setContentVIEw(R.layout.main);   } }

下面是main.xml的内容:

<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"  androID:orIEntation="vertical"  androID:layout_wIDth="fill_parent"  androID:layout_height="fill_parent"  >  <TextVIEw    androID:layout_wIDth="fill_parent"    androID:layout_height="wrap_content"    androID:text="@string/fragment_intro"    />  <fragment androID:name="com.skw.fragmentlayouttest.ExampleFragment"    androID:ID="@+ID/frag_example"    androID:layout_weight="1"    androID:layout_wIDth="match_parent"    androID:layout_height="match_parent"/></linearLayout>

说明:在该布局文件中通过调用了先前自定义的ExampleFragment。
点击查看:静态方式的完整源码
2. 动态方式
重复"上面的第一步和第二步",实现一个Fragment子类。
第三步:在需要用到该Fragment的Activity对应的布局中使用定义一个FrameLayout。

<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"  androID:orIEntation="vertical"  androID:layout_wIDth="fill_parent"  androID:layout_height="fill_parent"  >  <TextVIEw    androID:layout_wIDth="fill_parent"    androID:layout_height="wrap_content"    androID:text="@string/fragment_intro"    />  <FrameLayout    androID:ID="@+ID/frag_example"    androID:layout_wIDth="match_parent"    androID:layout_height="match_parent"/></linearLayout>

第四步:在Activity中将Fragment填充到FrameLayout中。

public class FragmentLayoutTest extends Activity {  @OverrIDe  protected voID onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentVIEw(R.layout.main);    // 获取FragmentManager    FragmentManager fragmentManager = getFragmentManager();    // 获取FragmentTransaction        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();    // 获取ExampleFragment    ExampleFragment fragment = new ExampleFragment();    // 将fragment添加到容器frag_example中    fragmentTransaction.add(R.ID.frag_example,fragment);    fragmentTransaction.commit();  }}

PreferenceFragment使用说明
1. 创建配置文件
新建res/xml/preferences.xml,内容如下:

<PreferenceScreen xmlns:androID="http://schemas.androID.com/apk/res/androID">  <Preferencecategory    androID:title="Preferencecategory A">    <!--      (01) androID:key是Preferece的ID     (02) androID:Title是Preferece的大标题     (03) androID:summary是Preferece的小标题     -->    <CheckBoxPreference      androID:key="checkBox_preference"      androID:title="Title_checkBox_preference"      androID:summary="summary_checkBox_preference" />  </Preferencecategory>  <Preferencecategory    androID:title="Preferencecategory B">    <!--      androID:dialogTitle是对话框的标题     androID:defaultValue是默认值     -->    <EditTextPreference      androID:key="edittext_preference"      androID:title="Title_edittext_preference"      androID:summary="null"       androID:dialogtitle="dialog_Title_edittext_preference"      androID:defaultValue="null" />    <!--      androID:entrIEs是列表中各项的说明     androID:entryValues是列表中各项的值     -->    <ListPreference       androID:key="List_preference"       androID:dialogtitle="Choose Font"       androID:entrIEs="@array/pref_Font_types"       androID:entryValues="@array/pref_Font_types_values"       androID:summary="sans"       androID:title="Font"       androID:defaultValue="sans"/>   </Preferencecategory>  <Preferencecategory    androID:title="Preferencecategory C">    <SwitchPreference      androID:key="switch_preferece"      androID:title="Title_switch_preferece"      androID:defaultValue="true" />    <SeekbarPreference      androID:key="seekbar_preference"      androID:title="Title_seekbar_preference"      androID:max="100"      androID:defaultValue="30" />  </Preferencecategory></PreferenceScreen>

说明:PreferenceFragment的组件很多,包括CheckBoxPreference,EditTextPreference,ListPreference,SwitchPreference,SeekbarPreference,VolumePreference等。这些组建的属性定义如下。
(01) androID:key是Preferece的ID,它是Preferece的唯一标识。
(02) androID:Title是Preferece的大标题。
(03) androID:summary是Preferece的小标题。
(04) androID:dialogTitle是对话框的标题。
(05) androID:defaultValue是默认值。
(06) androID:entrIEs是列表中各项的说明。
(07) androID:entryValues是列表中各项的值。
注意:SwitchPreference是API 14(AndroID4.0)才支持的。所以,要想使用SwitchPreference的话,必须在manifest中定义apk支持的最小版本。
<uses-sdk androID:minSdkVersion="14" />
2. 自定义PreferenceFragment

public class PrefsFragment extends PreferenceFragment   implements SharedPreferences.OnSharedPreferencechangelistener,Preference.OnPreferenceClickListener {  private static final String TAG = "##PrefsFragment##";  private static final String CHECK_PREFERENCE  = "checkBox_preference";  private static final String EDITTEXT_PREFERENCE = "edittext_preference";  private static final String List_PREFERENCE   = "List_preference";  private static final String SWITCH_PREFERENCE  = "switch_preferece";  private static final String SEEKbar_PREFERENCE = "seekbar_preference";  private Preference mEditText;  @OverrIDe  public voID onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    // Load the preferences from an XML resource    addPreferencesFromresource(R.xml.preferences);    mEditText = (Preference) findPreference(EDITTEXT_PREFERENCE);    mEditText.setonPreferenceClickListener(this);  }  @OverrIDe  public voID onSharedPreferenceChanged(SharedPreferences sharedPreferences,String key) {    // Set summary to be the user-description for the selected value    Preference connectionPref = findPreference(key);    if (key.equals(CHECK_PREFERENCE)) {      boolean checked = sharedPreferences.getBoolean(key,false);      Log.d(TAG,"CheckBox: checked="+checked);    } else if (key.equals(EDITTEXT_PREFERENCE)) {      String value = sharedPreferences.getString(key,"");      connectionPref.setSummary(value);      Log.d(TAG,"EditText: value="+value);    } else if (key.equals(List_PREFERENCE)) {      String value = sharedPreferences.getString(key,"List: value="+value);    } else if (key.equals(SWITCH_PREFERENCE)) {      boolean checked = sharedPreferences.getBoolean(key,"Switch: checked="+checked);    } else if (key.equals(SEEKbar_PREFERENCE)) {      int value = sharedPreferences.getInt(key,0);      Log.d(TAG,"Seekbar: value="+value);    }   }  @OverrIDe  public boolean onPreferenceClick(Preference preference) {    SharedPreferences sharedPreferences = preference.getSharedPreferences();    String value = sharedPreferences.getString(preference.getKey(),"");    Log.d(TAG,"onPreferenceClick: value="+value);    return true;  }  @OverrIDe  public voID onResume() {    super.onResume();    getPreferenceManager().getSharedPreferences().registerOnSharedPreferencechangelistener(this);  }  @OverrIDe  public voID onPause() {    getPreferenceManager().getSharedPreferences().unregisterOnSharedPreferencechangelistener(this);    super.onPause();  }}

说明:PreferenceFragment中的每一项都是一个SharedPreferences对象,它们会像SharedPreferences存储在该APK的私有数据区。监听PreferenceFragment中的成员有多种方式,常用的两种就是:
(01) 监听数据的变化:通过实现SharedPreferences.OnSharedPreferencechangelistener接口,来监听PreferenceFragment中每一项的数据变化。
(02) 监听点击事件:通过实现Preference.OnPreferenceClickListener接口,来监听PreferenceFragment中每一项的点击动作。
3. 使用PreferenceFragment
前面已经定义好了一个PreferenceFragment。接下来,就可以实例化它的对象,并将其在Activity中进行显示。

public class FragmentTest extends Activity {  @OverrIDe  public voID onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    //setContentVIEw(R.layout.main);    getFragmentManager().beginTransaction().replace(androID.R.ID.content,new PrefsFragment()).commit();   }}

总结

以上是内存溢出为你收集整理的Android中Fragment子类及其PreferenceFragment的创建过程演示全部内容,希望文章能够帮你解决Android中Fragment子类及其PreferenceFragment的创建过程演示所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1149265.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存