0

我是Android編程新手。我目前正在將媒體播放器集成到我的應用中。通過菜單,我希望用戶關閉聲音,但如果需要也可以再次啓動。現在我有一個複選框,在音樂播放時被選中,音樂在未被選中時被關閉。菜單中的複選框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" /> 

+0

http://stackoverflow.com/questions/8148746/ Android的行動吧,可勾選菜單項 - 不 - 不工作顯示,正常/ 8493609#8493609 – Naddy

回答

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到通道的關鍵做到這一點eck框,其中相應的複選框必須依賴於。

現在在res文件夾中創建一個名爲xml的文件夾,並在其中放置您的首選項xml文件。 然後執行以下操作。

public class SettingsActivity extends PreferenceActivity { 

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


    } 

}  

您還可以使用更推薦哪些片段做到這一點。但是上述方法要容易得多。如果你想用碎片做到這一點,請檢查this,其中包含您需要了解的有關創建設置活動的所有信息。

希望這會有所幫助!!!!!!!

0

如下因素的編解碼器會導致應用程序關閉...

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

相反,你可以這樣做:

item.setChecked(true)