android – 关闭PreferenceFragment

我又找了几个小时,没找到我理解/正在寻找的答案.

我有一个首选项屏幕,当用户点击菜单中的设置时会打开该屏幕.这有效.
但是,当他完成设置时,我如何才能最好地使用户关闭此屏幕.

我喜欢在Chrome中完成的方式,您可以在其中返回上一个屏幕.

其他可能性也受到赞赏.

活动,属于偏好(它应该返回):

public class MainActivity extends Activity
   {
      @Override
      public void onCreate(Bundle savedInstanceState)
      {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.main);
      }

      public void startGame(View view) 
      {
          Intent intent = new Intent(this,Game.class);
          startActivity(intent);
      }

          @Override
      public boolean onCreateOptionsMenu(Menu menu) 
      {
          MenuInflater inflater = getMenuInflater();
          inflater.inflate(R.layout.game_settings,menu);
          return super.onCreateOptionsMenu(menu);
      }

      @Override
      public boolean onoptionsItemSelected(MenuItem item) 
      {
          switch (item.getItemId()) 
          {
         case R.id.action_settings:
           getFragmentManager().beginTransaction()
              .replace(android.R.id.content,new SettingsFragment())
              .commit();
           return true;

         default:
           return super.onoptionsItemSelected(item);
          }
      }
  }

喜好:

public class SettingsFragment extends PreferenceFragment 
   {
       @Override
       public void onCreate(Bundle savedInstanceState) 
       {
           super.onCreate(savedInstanceState);
           addPreferencesFromresource(R.layout.preferences);
       }
   }

XML:

<?xml version="1.0" encoding="utf-8"?>
  <PreferenceScreen 
    xmlns:android="http://schemas.android.com/apk/res/android" >
    <PreferenceCategory android:title="@string/game_settings">
      <ListPreference 
        android:title="@string/circle_setting_title"
        android:key="circle_setting"
        android:summary="@string/circle_setting_summary" 
        android:entries="@array/circle_setting_amount"
        android:entryValues="@array/circle_setting_amount_value"
        android:defaultValue="3"/>
      <ListPreference 
        android:title="@string/color_setting_title"
        android:key="color_setting"
        android:summary="@string/color_setting_summary" 
        android:entries="@array/color_setting_amount"
        android:entryValues="@array/color_setting_amount_value"
        android:defaultValue="3"/>
    </PreferenceCategory>
  </PreferenceScreen>

解决方法

要使MainActivity成为首选项的父活动:
假设你的res / xml文件夹中已有prefs.xml(或任何你喜欢的名字)文件

在您的清单中声明您的活动(在应用程序部分):

<!-- Main activity -->
<activity
    android:name="com.example.app.MainActivity"
    android:label="@string/app_name" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

<!-- Preferences -->
<activity
    android:name="com.example.app.PrefsActivity"
/>

然后,假设您有一个菜单,一个按钮或任何您想要显示内容
使用PreferenceScreen,只需将此行添加到事件处理程序:

startActivity(new Intent(this,PrefsActivity.class));

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...