2012-03-27 21 views
6

के क्रियाओं को बदलना मैं एक गेम बना रहा हूं और मेरे पास एक विकल्प पृष्ठ है जो संगीत को चालू या बंद करता है। मैं backbutton ओवरराइड करना चाहते हैं ताकि यह वापस घर पृष्ठ पर जाता है, तो आप समझ जाएंगे कि कारण है कि जब आप मेरे कोड देखें:एंड्रॉइड: बैक बटन

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 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); 


    boolean musicPlays = isMyServiceRunning(MyMusicService.class.getCanonicalName()); 


    soundOption.setChecked(musicPlays); 


    if(musicPlays==true){ 

     tSound.setText("On"); 
    } 

    if(musicPlays==false) { 

     tSound.setText("Off"); 
    } 


    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); 
       Intent i = new Intent(OptionsActivity.this, OptionsActivity.class); 
       startActivity(i); 

      } 

      else { 

       if(stopService(i)==true){ 

        soundOption.setChecked(false); 
        stopService(i); 
        Toast.makeText(OptionsActivity.this, "Music off.", Toast.LENGTH_SHORT).show(); 
        Intent i = new Intent(OptionsActivity.this, OptionsActivity.class); 
        startActivity(i); 

       } 
      } 
     } 

    }); 



    tblBtn.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 

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

     } 
    }); 



    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(); 

        optionsDB entry = new optionsDB(OptionsActivity.this); //Creating a new instance of MasterMind game 
        entry.open(); 
        entry.createOptionEntry(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; 

      } 
     } 
    }); 
} 

}

कोई मदद शानदार होगा धन्यवाद।

अपडेट: इस जोड़ा गया, अभी भी काम नहीं करता है:

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     // do something on back. 
     return true; 
    } 
    Intent i = new Intent(OptionsActivity.this, MainActivity.class); 
    startActivity(i); 
    return super.onKeyDown(keyCode, event); 
} 

उत्तर

6

अवहेलना गतिविधि की onKeyDown(), यहाँ आप विभिन्न कुंजी संभाल कर सकते हैं या onBackPresses() भी

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     // do something on back. 
     return true; 
    } 

    return super.onKeyDown(keyCode, event); 
} 
+1

आपकी टिप्पणी के लिए धन्यवाद, मैंने यह कोशिश की है, लेकिन जैसे ही मैं विकल्प वर्ग में जाता हूं, मैं फोर्स क्लोज़ प्राप्त करता रहता हूं। कोई विचार? –

+1

अपने लॉगकैट का पता लगाएं और देखें कि वास्तव में त्रुटि कहां आ रही है? –

+0

आह ठीक है, ठीक है अब यह दुर्घटनाग्रस्त नहीं हो रहा है ... यह अभी कुछ नहीं कर रहा है हाहा। क्या आप मेरे संशोधित उत्तर की जांच कर सकते हैं? –

4
@Override 
public void onBackPressed() { 
    ............. 
} 
8

ओवरराइड कर सकते हैं बैक बटन की क्रिया को ओवरराइड करने के लिए onBackPressed() फ़ंक्शन का उपयोग करें। यहां कुछ नमूना कोड दिया गया है:

 @Override 
     public void onBackPressed() 
      { 
      Intent intent = new Intent(this,ABC.class); 
      startActivity(intent); 
      } 

उस कार्रवाई को लिखें जिसे आप ऑनबैकप्रेस() फ़ंक्शन के अंदर चाहते हैं।

संबंधित मुद्दे