2017-04-23 41 views
2

对于Android Studio来说很新,而且我的preferences.xml中的CheckBox与我所有其他活动连接时出现问题,因此它们充当应用程序的设置。正如官方页面(https://developer.android.com/guide/topics/ui/settings.html)所说的那样,我已经设置了所有内容,但仍然无法使所有内容正常工作。如何将首选项与活动连接?

这里是我的设置类:

public class Settings extends Activity { 

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

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

和我SettingsFragment类:

public class SettingsFragment extends PreferenceFragment { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     addPreferencesFromResource(R.xml.preferences); 
    } 
} 

我想要做的是,如果检查或关闭;如果未选中围绕切换音乐或SFX任应用程序,这里是我的偏好.xml:

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <CheckBoxPreference 
     android:key="music check box" 
     android:title="Music" 
     android:defaultValue="true" 
     android:id="@+id/checkMusic"/> 

    <CheckBoxPreference 
     android:key="sfx check box" 
     android:title="SFX" 
     android:defaultValue="true" 
     android:id="@+id/checkSfx"/> 

    <CheckBoxPreference 
     android:key="notifications check box" 
     android:title="Notifications" 
     android:defaultValue="true" 
     android:id="@+id/checkNotif"/> 

</PreferenceScreen> 

现在我的MediaPlayer位于一个应用程序所以它会围绕每一个活动。我如何解决这一切?现在

+0

究竟是什么错误? – pantos27

+0

@ pantos27好我的家伙,我只是无法让这些复选框做任何事情。我想这很酷,所有他们保持onDestroy()相同的状态,但以这种速度他们几乎没用。我需要连接他们的东西,他们不让我。 – Mintoil

回答

0

我的MediaPlayer位于应用程序类,以便将每个活动

这可能不是正确的方式去走一走。

我该如何解决所有这些问题?

有部分管理您的MediaPlayerApplication的样子,可能是一个Service晚些时候)呼吁SharedPreferencesregisterOnSharedPreferenceChangeListener(),了解变化。然后,根据需要对这些更改做出反应。

+0

仍然无法设置该方法,你能分享一个例子或示例代码?我如何让我的MediaPlayer调用该方法?在此先感谢男士 – Mintoil

+0

@Mintoil:查看[本课程](https://github.com/commonsguy/cw-omnibus/blob/v8.5/Documents/DocumentTree/app/src/main/java/com/commonsware/ android/documenttree/SettingsFragment.java)和[this class](https://github.com/commonsguy/cw-omnibus/blob/v8.5/Introspection/SAWMonitorTile/app/src/main/java/com/commonsware/ android/sawmonitor/SettingsFragment.java)的示例使用'registerOnSharedPreferenceChangeListener()'。 – CommonsWare

+0

@Mintoil:“我怎么让我的MediaPlayer调用这个方法?” - Application的自定义子类可以调用PreferenceManager.getDefaultSharedPreferences(),并在该SharedPreferences中调用registerOnSharedPreferenceChangedListener()。这个'Application'大概可以访问你的'MediaPlayer',并且可以根据你的'SharedPreferences'的变化告诉它该做什么。 – CommonsWare