2012-03-23 7 views
3

私は現在アンドロイドゲームを開発しており、現時点ではToggleButtonという形式のオプションが1つあります:Music on、Music off。音楽が現在再生されている場合Android:データベースにブール値を保存する(初心者)

は、私は現在の場所で、このブール、そのクラスのチェックを持っているとトグルボタンがチェックされているかどうか、これは決定されます。

private boolean isMyServiceRunning(String serviceCanonicalClassName) { 
    ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE); 
    for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) { 
     if (serviceCanonicalClassName.equals(service.service.getClassName())) { 
      return true; 
     } 
    } 
    return false; 
} 

をだから今、私が送信できるようにしたいです私が設定したSQLiteデータベースのTrueまたはFalseの値。現在のところ、私はこれを行うための唯一の方法は、ToggleButtonがチェックされているかどうかにかかわらず値を変更するTextViewを作成することです。 TextViewの値はデータベースに正常に送信されますが、これにより、ユーザーが選択した現在の設定を保存しないなどの問題が発生します。

返信いただきありがとうございます。返信いただけるようにコードがもう必要な場合は、すぐに対応させていただきます。

私はかなり混乱することに対する回答の一部を発見したので、私はあなたがより良い理解を得ることができるので、私はちょうどここに私のコードのすべてをコピーした場合、それが最善だと思う:

public class OptionsActivity extends Activity { 

private boolean isMyServiceRunning(String serviceCanonicalClassName) { 
    ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE); 
    for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) { 
     if (serviceCanonicalClassName.equals(service.service.getClassName())) { 
      return true; 
     } 
    } 
    return false; 
} 

Intent i; // Handles MyMusicService.java 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.options); 


    final TextView tSound = (TextView) findViewById(R.id.textView2); 
    final TextView tJoin = (TextView) findViewById(R.id.textView3); 

    final Button saveBtn = (Button) findViewById(R.id.optSaveBtn); 
    final Button tblBtn = (Button) findViewById(R.id.tableBtn); 

    i=new Intent(this, MyMusicService.class); 

    final ToggleButton soundOption = (ToggleButton) findViewById(R.id.soundPref); 
    final ToggleButton joinOption = (ToggleButton) findViewById(R.id.joinPref); 

    boolean musicPlays = isMyServiceRunning(MyMusicService.class.getCanonicalName()); 
    boolean joinChecking = joinOption.isChecked(); 

    soundOption.setChecked(musicPlays); 


    if(musicPlays==true){ 

     tSound.setText("On"); 
    } 

    if(musicPlays==false) { 

     tSound.setText("Off"); 
    } 

    if(joinChecking==true){ 

     tJoin.setText("Auto"); 
    } 

    if(joinChecking==false){ 

     tJoin.setText("Manual"); 
    } 

    soundOption.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 

      // Perform action on clicks to control sound being on and off. 
      if(soundOption.isChecked()) { 

       Toast.makeText(OptionsActivity.this, "Music on.", Toast.LENGTH_SHORT).show(); 
       startService(i); 

      } 

      else { 

       if(stopService(i)==true){ 
        soundOption.setChecked(false); 
        stopService(i); 
        Toast.makeText(OptionsActivity.this, "Music off.", Toast.LENGTH_SHORT).show(); 

       } 
      } 
     }}); 

    joinOption.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 

      if(joinOption.isChecked()){ 

       Toast.makeText(OptionsActivity.this, "Auto", Toast.LENGTH_SHORT).show(); 

      } 

      else{ 

       Toast.makeText(OptionsActivity.this, "Manual", Toast.LENGTH_SHORT).show(); 

      } 

     } 
    }); 

    tblBtn.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 

      Intent shmoo = new Intent(OptionsActivity.this, SQLView.class); 
      startActivity(shmoo); 

     } 
    }); 



    saveBtn.setOnClickListener(new View.OnClickListener(){ 

     public void onClick(View v) { 




      switch (v.getId()){ 


      case R.id.optSaveBtn: //Determine what will happen when the user presses the "Submit button". 
       boolean optionsWork = true; 
       try{ 

        String sound = tSound.getText().toString(); 
        String join = tJoin.getText().toString(); 

        optionsDB entry = new optionsDB(OptionsActivity.this); //Creating a new instance of MasterMind game 
        entry.open(); 
        entry.createOptionEntry(join, sound); //Passing both strings 
        entry.close(); 

       }catch (Exception e){ //Creating an error message if for some reason the app cannot transfer data to the Database. 

        Toast.makeText(OptionsActivity.this, "Error", Toast.LENGTH_SHORT).show(); 
       } 

       finally { //Creating an AlertDialog box when the user presses the Submit button. 

        if (optionsWork){ 

         Toast.makeText(OptionsActivity.this, "Settings Saved", Toast.LENGTH_SHORT).show(); 

        } 

       } 
       break; 
      } 
     } 
    }); 
} 



protected void onDestroy() { 
    if (this.isFinishing()){ 
     super.onDestroy(); 
     stopService(i); 
    } 
} 

}

+0

http://developer.android.com/guide/topics/data/data-storage.html –

答えて

6

SQLiteはブール型を処理しません。私はいつもsmallintを使って、フィールドに1か0を入れます。ヌルを受け入れないように設定し、使用時にデフォルト値を1または0に設定してください。

はここに例を示します

CREATE TABLE "db"."boolean_example" ("boolean_example_field" smallint NOT NULL DEFAULT 0); 
+0

: そして、ここでは一例です0または1に変換する必要があります。 – Houcine

+0

ご回答いただきありがとうございます。私にこの例を教えていただけますか? –

2

店の好みに良いアイデアはおそらくShared Preferencesを使用します。私はSQLiteのデータベースにブールを保存するために、あなた+1に同意

SharedPreferences settings = getSharedPreferences("GameSettings", 0); 
    SharedPreferences.Editor editor = settings.edit();  
    editor.putBoolean("EnableMusic", mSilentMode); 
    editor.commit(); 

    ... 
    boolean isOn = settings.getBoolean("EnableMusic",true); 
+0

こんにちは、ありがとう、あなたのコメントのために。私はあなたがこの例を編集し、私が上に投稿したコードのいくつかを使うことはできないと思いますか?申し訳ありませんが私はこれを試してきましたが、私はまだ不明です。ありがとうございました。 –

関連する問題