2010-09-15 8 views
6

स्क्रीन चार बटन प्रदर्शित करती है। जब एक बटन दबाया जाता है, तो एक मीडिया प्लेयर ध्वनि बजाता है। मेरी समस्या यह है कि एक ही समय में सभी बटनों के लिए सेटक्लिकेबल लागू हो रहा है।एंड्रॉइड। मैं सेटक्लिकेबल का उपयोग कर एक ही समय में सभी बटन क्लिक करने योग्य या अनजान कैसे सेट करूं?

एक बार बटन क्लिक होने के बाद, मैं चाहता हूं कि सभी बटन बटन क्लिक से जुड़े ध्वनि को चलाने के समाप्त होने तक अनजान हो जाएं। तब मैं सभी बटन क्लिक करने योग्य पर वापस सेट करना चाहता हूं।

कोड तब तक ठीक चलता है जब तक मैं सेटक्लिकेबल कोड सक्षम नहीं करता - बटन के लिए कोड नीचे दिए गए मेरे कोड नमूने में अक्षम है। टेस्ट फोन लॉक हो जाता है और मुझे बताता है कि एप्लिकेशन बंद हो गया है और फिर कोशिश कर रहा है।

दुर्भाग्य से, सेट के बिना, उपयोगकर्ता किसी भी बटन को दबा सकता है और पहले चुने गए ध्वनि को समाप्त होने से पहले कोई आवाज सुन सकता है।

आपके समय और सहायता के लिए धन्यवाद।

import android.app.Activity; 
import android.app.AlertDialog; 
import android.os.Bundle; 
import android.view.KeyEvent; 
import android.view.View; 
import android.widget.ImageButton; 
import android.media.MediaPlayer; 
import android.media.MediaPlayer.OnCompletionListener; 


public class hipsterdoofus extends Activity 
{ 
private int asoundfilenumber;//integer id of sound file to be played 

public ImageButton buttonOne; 
public ImageButton buttonTwo; 
public ImageButton buttonThree; 
public ImageButton buttonFour; 


public void myClickHandler(View v) { 



    switch (v.getId()) 
     { 

     case R.id.buttonOne: 
     asoundfilenumber=0x7f040000; 
     break; 

     case R.id.buttonTwo: 
     asoundfilenumber=0x7f040001; 
     break; 

     case R.id.buttonThree: 
     asoundfilenumber=0x7f040002; 
     break; 

     case R.id.buttonFour: 
     asoundfilenumber=0x7f040003; 
     break; 



     }//closes switch test 



    freezeButtonsAndPlaySoundThenUnfreezeButtons(); 

    }//closes onClick 


    public void freezeButtonsAndPlaySoundThenUnfreezeButtons() 
{ 

    **//buttonOne.setClickable(false);//sets buttonOne to unclickable** 

    MediaPlayer mp = MediaPlayer.create(getBaseContext(), asoundfilenumber); 
    mp.start(); 


    mp.setOnCompletionListener(new OnCompletionListener()//listens for player to finish then releases player 
    { 

    @Override 
    public void onCompletion(MediaPlayer mpalmost) 
    { 
    mpalmost.release(); 
    } 



    }); 

    **//buttonOne.setClickable(true); //sets buttonOne to clickable** 

} 


public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

    } 

उत्तर

4

मुझे लगता है कि संपत्ति आप देख रहे हैं setEnabled किया जाएगा (बूलियन के साथ सेट)

कुछ कोड;

public void enableDisableButtons(Boolean state){ 
    buttonOne.setEnabled(state); 
    buttonTwo.setEnabled(state); 
    buttonThree.setEnabled(state); 
    buttonFour.setEnabled(state); 
} 

public void freezeButtonsAndPlaySoundThenUnfreezeButtons() 
{ 
    enableDisableButtons(false); // disable buttons 

    MediaPlayer mp = MediaPlayer.create(getBaseContext(), asoundfilenumber); 
    mp.start(); 


    mp.setOnCompletionListener(new OnCompletionListener()//listens for player to finish then releases player 
    { 

     @Override 
     public void onCompletion(MediaPlayer mpalmost) 
     { 
      enableDisableButtons(true); // Re-enable buttons 
      mpalmost.release(); 
     } 
     }); 
} 
+0

की विधि setEnabled (गलत) उपयोग करना चाहते हैं अपने त्वरित जवाब के लिए धन्यवाद। मैं कोशिश करूँगा – John

+0

धन्यवाद डेमन। – John

+0

मैंने आपकी बूलियन स्टेट विधि की तकनीक का उपयोग किया - मैंने विधि के अंदर सेटक्लिकेबल का उपयोग किया क्योंकि मैं myClickHandler विधि का उपयोग कर रहा था। – John

1

आप को निष्क्रिय करने के लिए एक बटन देखें वर्ग