Android菜单中的复选框

时间:2013-11-28 15:17:59

标签: android android-layout android-intent checkbox android-mediaplayer

我是Android编程新手。我目前正在我的应用程序中集成媒体播放器。通过菜单,我希望用户关闭声音,但如果需要也可以再次启动它。现在我有一个复选框,在播放音乐时检查,未检查时关闭音乐。

我已设法在菜单中插入复选框,并在应用启动时对其进行检查,就像它应该的那样。但当我尝试取消选中它时,应用程序会关闭...

有人有出版商吗?看到明显的错误?或者只想提示?

MainActivity

@Override
    public boolean onOptionsItemSelected(MenuItem item)
    {
        //Switch-sats i syfte om att det kommer tillkomma fler alternativ
        //Switchen bygger på att hämta rätt id ifrån användarens val
        switch (item.getItemId())
        {
        case R.id.action_help:
                //Bytar Activity till help
                Intent intent = new Intent(MainActivity1.this, help.class);
                startActivity(intent);          
            return true;

        case R.id.music:
            final CheckBox music = (CheckBox)findViewById(R.id.music);
            music.setChecked(true);
            music.setOnClickListener(new OnClickListener(){
                public void onClick(View v){

                if (((CheckBox) v).isChecked()) {
                    backsound = MediaPlayer.create(MainActivity1.this, R.raw.backsound);  
                    backsound.start();
                    backsound.setLooping(true);
                }else{
                    music.setChecked(false);
                    backsound.stop();
                }
            }});

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

Main_activity.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

<item
    android:id="@+id/action_settings"
    android:orderInCategory="100"
    android:showAsAction="never"
    android:title="@string/action_settings"/>

<item
    android:id="@+id/action_help"
    android:orderInCategory="100"
    android:showAsAction="never"
    android:title="@string/help"/>

<item
     android:id="@+id/music" 
     android:title="@string/musik" 
     android:checkable="true"
     android:checked="true" />

2 个答案:

答案 0 :(得分:0)

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
     <PreferenceCategory
           android:summary="@string/summary_category"
           android:title="@string/title_category">
           <CheckBoxPreference
                 android:key="main"
                 android:defaultValue="true"
                 android:summary="@string/summary_main"
                 android:title="@string/title_main" 
          />
                  </PreferenceCategory>
<!--Any other categories include here-->
</PreferenceScreen>

您只需将android:dependancy设置为相应复选框必须依赖的复选框的键即可。

现在在res文件夹中创建一个名为xml的文件夹,并将您的首选项xml文件放在其中。 然后执行以下操作。

   
 public class SettingsActivity extends PreferenceActivity {

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


    }

}    

您也可以使用更推荐的片段来完成此操作。但上述方法要容易得多。如果您想使用片段执行此操作,请选中this,其中包含有关创建“设置活动”所需的所有信息。

  

希望这有助于!!!!!!!

答案 1 :(得分:0)

以下编解码器将导致应用程序关闭...

final CheckBox music = (CheckBox)findViewById(R.id.music);
music.setChecked(true);

相反,你可以这样做:

item.setChecked(true)