Aktivieren Sie nur ein Kontrollkästchen der Kontrollkästchen für die Begrüßungseinstellungen

Ich habe App-Start abhängig von der Nutzerpräferenz mit drei verschiedenen Kontrollkästchen:

1 - App ohne Splash und Musik starten.

2- App nur mit Splash starten.

3-App mit Spalsh und Musik starten.

mit dem folgenden code funktioniert es einwandfrei.

Aber noch zwei Punkte zu erreichen:

ZUERST Es sollte nur ein Kontrollkästchen aktiviert sein.

ZWEITE Nachdem Sie eines der Kontrollkästchen aktiviert haben, kehren Sie zur Hauptaktivität zurück. Hier können Sie die App entweder mithilfe von beendenZurück-Button oderBeenden-Taste Was ich bereits in meinem Optionsmenü habe, ist das Problem, dass entweder mitZurück-Button oderBeenden-Taste es reagiert nicht auf den ersten Klick, ich muss zweimal klicken, um die App zu beenden.

aber ich kann es nicht erreichen,

Jede Hilfe wird gebeten.

public class Splash extends Activity{   
MediaPlayer ourSong;
@Override
protected void onCreate(Bundle savedInstanceState) {
    this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
         setContentView(R.layout.splash);  

         SharedPreferences getPrefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());                 

         boolean without_splash_screen = getPrefs.getBoolean("without_splash_screen", true);
            if (without_splash_screen == true)
            {   
                Intent intent = new Intent(Splash.this, MainActivity.class);                                     
                startActivity(intent);
            }

    boolean splash = getPrefs.getBoolean("splash", true);       
    if(splash == true) {
        setContentView(R.layout.splash);  
        Thread timer = new Thread()
        {
            public void run()
            {
                try
                {
                    sleep(2000); 
                }
                catch (InterruptedException e)
                {
                    e.printStackTrace(); 
                }
                finally
                {
                    Intent intent = new Intent(Splash.this, MainActivity.class);                                     
                    startActivity(intent);  
                }
            }                          
        };
        timer.start();   
    }                 

    ourSong = MediaPlayer.create(Splash.this, R.raw.splashsound); 

    SharedPreferences getPrefs1 = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
    boolean music = getPrefs1.getBoolean("splash_music", true);
    if (music == true)      
    ourSong.start();

    Thread timer = new Thread(){
        public void run(){
            try{
                sleep(2000); }
              catch (InterruptedException e){
                e.printStackTrace(); }
              finally{
                  Intent intent = new Intent(Splash.this, MainActivity.class);                                     
                  startActivity(intent); }}                                 
                                };
         timer.start();   }

@Override
protected void onPause() {
            // TODO Auto-generated method stub
    super.onPause();
    ourSong.release();
    finish();
          } 
       }

Im xml Ordner:prefs.xml

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

    <CheckBoxPreference android:title="without splash screen" 
              android:defaultValue="true" 
              android:key="without_splash_screen" 
              android:summary="Start app without splash"/> 

    <CheckBoxPreference android:title="splash screen" 
              android:defaultValue="true" 
              android:key="splash" 
              android:summary="Start app with splash only" />

    <CheckBoxPreference android:title="splash screen music" 
              android:defaultValue="true" 
              android:key="splash_music" 
              android:summary="Start app with splash and music" /> 

 </PreferenceScreen>

AKTUALISIEREN:

Ich habe auch den folgenden Code ausprobiert, aber er ändert nichts. Trotzdem können alle Kontrollkästchen überprüft werden:

public class Splash extends Activity{   
MediaPlayer ourSong;

@Override
protected void onCreate(Bundle savedInstanceState) {
    this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
         setContentView(R.layout.splash);  

     SharedPreferences getPrefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());                 

         boolean without_splash_screen = getPrefs.getBoolean("without_splash_screen", true);
            if (without_splash_screen == true)               
            {   
                Intent intent = new Intent(Splash.this, MainActivity.class);                                     
                startActivity(intent);                      
            }
    boolean splash = getPrefs.getBoolean("splash", true);       
    if(splash == true) {
        setContentView(R.layout.splash);  
        Thread timer = new Thread()
        {
            public void run()
            {
                try
                {
                    sleep(2000); 
                }
                catch (InterruptedException e)
                {
                    e.printStackTrace(); 
                }
                finally
                {
                    Intent intent = new Intent(Splash.this, MainActivity.class);                                     
                    startActivity(intent);
                }
            }                          
        };
        timer.start();   
    }                    
    ourSong = MediaPlayer.create(Splash.this, R.raw.splashsound); 

    SharedPreferences getPrefs1 = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
    boolean music = getPrefs1.getBoolean("splash_music", true);
    if (music == true)      
    ourSong.start();

    Thread timer = new Thread(){
        public void run(){
            try{
                sleep(2000); 
                }
              catch (InterruptedException e){
                e.printStackTrace(); 
                }
              finally{
                  Intent intent = new Intent(Splash.this, MainActivity.class);                                     
                    startActivity(intent);
                    }
            }
        };                                                                      
         timer.start();  
         }      
public void getPrefs() {  
    SharedPreferences getPrefs = PreferenceManager  
                    .getDefaultSharedPreferences(getBaseContext());  

    boolean without_splash_screen = getPrefs.getBoolean("without_splash_screen", true);
    boolean splash = getPrefs.getBoolean("splash", false);       
    boolean music = getPrefs.getBoolean("splash_music", false);

    if (without_splash_screen == true){  
        splash = false; 
        music = false;                  
       }else if (splash == true){  
        music = false; 
        without_splash_screen = false;                       
       }else if (music == true){  
        without_splash_screen = false; 
        splash = false;  
    }
    }
   @Override
   protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
ourSong.release();
finish();
  }
  }

UPDATE: Ich habe auch einen anderen Code ausprobiert, aber er ändert nichts, trotzdem können alle Kontrollkästchen überprüft werden:

  public class Splash extends Activity{   
    MediaPlayer ourSong;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
     // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
      setContentView(R.layout.splash);  

     SharedPreferences getPrefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());                 

     boolean without_splash_screen = getPrefs.getBoolean("without_splash_screen", true);
        if (without_splash_screen == true)
        {   
            Intent intent = new Intent(Splash.this, MainActivity.class);                                     
            startActivity(intent);
        }
        else {       
            getPrefs.getBoolean("splash", false);       
            getPrefs.getBoolean("splash_music", false);
            }
boolean splash = getPrefs.getBoolean("splash", true);       
if(splash == true) {
    setContentView(R.layout.splash);  
    Thread timer = new Thread(){
        public void run(){
            try{
                sleep(2000); 
                }
            catch (InterruptedException e){
                e.printStackTrace(); 
                }
            finally{
                Intent intent = new Intent(Splash.this, MainActivity.class);                                     
                startActivity(intent);  
                }
            } 
        };                             
    timer.start();   
    }                
else
{
    getPrefs.getBoolean("without_splash_screen", false);       
    getPrefs.getBoolean("splash_music", false);
    }
ourSong = MediaPlayer.create(Splash.this, R.raw.splashsound); 
boolean splash_music = getPrefs.getBoolean("splash_music", true);
if (splash_music == true)   {
    ourSong.start();
    setContentView(R.layout.splash);      
Thread timer = new Thread(){
    public void run(){
        try{
            sleep(2000); 
            }
          catch (InterruptedException e){
            e.printStackTrace(); 
            }
          finally{
              Intent intent = new Intent(Splash.this, MainActivity.class);                                     
              startActivity(intent); 
          }
      }                          
  };
  timer.start();   
  }                   
 else
  {
getPrefs.getBoolean("without_splash_screen", false);       
getPrefs.getBoolean("splash", false);
 }
   }
 @Override
 protected void onPause() {
  // TODO Auto-generated method stub
  super.onPause();
  ourSong.release();
  finish();
      } 
   }

Irgendwelche Ratschläge, danke.

UPDATE 3 (GANZES PROJEKT):

1- ein markiertes Kästchen perfekt erreicht.

2- entweder mit der Zurück-Taste oder der Beenden-Taste in MainActivity, reagiert nicht auf den ersten Klick, ich muss zwei- oder dreimal klicken, um die App zu beenden.

Splash.java

  public class Splash extends Activity{ 
MediaPlayer ourSong;
@Override
protected void onCreate(Bundle DrTsn) {
    this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    // TODO Auto-generated method stub
    super.onCreate(DrTsn);
         setContentView(R.layout.splash);  

         SharedPreferences getPrefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());                 

         boolean without_splash_screen = getPrefs.getBoolean("without_splash_screen", true);
            if (without_splash_screen == true)
            {                                              
                Intent intent = new Intent(Splash.this, MainActivity.class);                                     
                  startActivity(intent);                        
            }

    boolean splash = getPrefs.getBoolean("splash", true);       
    if(splash == true) {
        setContentView(R.layout.splash);  
        Thread timer = new Thread()
        {
            public void run()
            {
                try
                {
                    sleep(2000); 
                }
                catch (InterruptedException e)
                {
                    e.printStackTrace(); 
                }
                finally
                {
                    Intent intent = new Intent(Splash.this, MainActivity.class);                                     
                    startActivity(intent);  
                }
            }                          
        };
        timer.start();   
    }                    
    ourSong = MediaPlayer.create(Splash.this, R.raw.splashsound); 

    SharedPreferences getPrefs1 = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
    boolean music = getPrefs1.getBoolean("splash_music", true);
    if (music == true)      
    ourSong.start();

    Thread timer = new Thread(){
        public void run(){
            try{
                sleep(2000); 
                }
              catch (InterruptedException e){
                e.printStackTrace(); 
                }
              finally{
                  Intent intent = new Intent(Splash.this, MainActivity.class);                                     
                  startActivity(intent); 
                  }
            }
        };                                                                      
         timer.start();   
         }  
@Override
protected void onPause() {
            // TODO Auto-generated method stub
    super.onPause();
    ourSong.release();
    finish();
          } 
       }

Prefs.java

 public class Prefs extends PreferenceActivity {
  CheckBoxPreference splash;
  CheckBoxPreference splash_music;
  CheckBoxPreference no_splash_music;

 @SuppressWarnings("deprecation")
 @Override
 protected void onCreate(Bundle savedInstanceState) {
   // TODO Auto-generated method stub
   super.onCreate(savedInstanceState);

   addPreferencesFromResource(R.xml.prefs);

  splash = (CheckBoxPreference) findPreference("splash");
  splash_music = (CheckBoxPreference) findPreference("splash_music");
  no_splash_music = (CheckBoxPreference) findPreference("without_splash_screen");

  splash.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {

    @Override
    public boolean onPreferenceChange(Preference preference,
            Object newValue) {
        // TODO Auto-generated method stub

        splash.setChecked(true);
        splash_music.setChecked(false);
        no_splash_music.setChecked(false);

        return true;
    }

});

splash_music
        .setOnPreferenceChangeListener(new OnPreferenceChangeListener() {

            @Override
            public boolean onPreferenceChange(Preference preference,
                    Object newValue) {
                // TODO Auto-generated method stub

                splash.setChecked(false);
                splash_music.setChecked(true);
                no_splash_music.setChecked(false);

                return true;
            }

        });

no_splash_music
        .setOnPreferenceChangeListener(new OnPreferenceChangeListener() {

            @Override
            public boolean onPreferenceChange(Preference preference,
                    Object newValue) {
                // TODO Auto-generated method stub

                splash.setChecked(false);
                splash_music.setChecked(false);
                no_splash_music.setChecked(true);

                return true;
            }
        });
  }
  }

MainActivity.java

  public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
}
@Override
public boolean onCreateOptionsMenu(android.view.Menu menu) {

MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.cool_menu, menu);

getLayoutInflater().setFactory(new Factory() {
public View onCreateView(String name, Context context,AttributeSet attrs) {

if (name .equalsIgnoreCase("com.android.internal.view.menu.IconMenuItemView")) {
try {
LayoutInflater li = LayoutInflater.from(context);
final View view = li.createView(name, null, attrs);

new Handler().post(new Runnable() {
public void run() {

((TextView) view).setTextSize(25);  
((TextView) view).setTextColor(Color.RED); 
} 
}
);                                        
return view;
}
 catch (InflateException e) {        
 }
  catch (ClassNotFoundException e) {          
  }
}                                  
return null; 
}
}
);           
return super.onCreateOptionsMenu(menu);                                    
}   
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // TODO Auto-generated method stub
    switch (item.getItemId()) {
    case R.id.aboutUs:
        Intent i = new Intent("com.example.checkbox.ABOUT");
        startActivity(i);
    break;
    case R.id.preferences:
        Intent p = new Intent("com.example.checkbox.PREFS");
        startActivity(p);
    break;
    case R.id.exit:
        finish();
    break;
}
return false;
   }
@Override
public void onBackPressed() {
    finish();
}
   }

AboutUs.java

     public class AboutUs extends Activity {
     @Override
   protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
      super.onCreate(savedInstanceState);
      this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
      setContentView(R.layout.about);  

      Button button = (Button)findViewById(R.id.about_button);           
    button.setOnClickListener(new OnClickListener() {
   public void onClick(View v) {
              finish(); }
                      }
                  );}
                 }

Antworten auf die Frage(3)

Ihre Antwort auf die Frage