2013-04-23 5 views
5

ठीक है, तो मेरे पास दो बटन हैं। पहला "टेक्स्ट लोड करें" और दूसरा "स्पीक आउट" करना है।एंड्रॉइड: रनटाइम में एक बटन सक्षम/अक्षम करें?

अब, मैं नहीं चाहता कि बोलो बटन सक्रिय होने के लिए है, जबकि कोई पाठ भरी हुई है चाहता हूँ।

मैं लोड पाठ बटन के onClickListener विधि द्वारा EditText में मान सेट करने प्रबंधित किया है। एक ही विधि मैं कहा जाता है,

btnSpeak.setEnabled(true); 

मैं के रूप में इस प्रारंभ कर दिया है,

btnSpeak = (Button) findViewById(R.id.button1); 

पूरे कोडन है,

@Override 
public void onInit(int status) { 

    if (status == TextToSpeech.SUCCESS) { 

     int result = tts.setLanguage(Locale.US); 

     if (result == TextToSpeech.LANG_MISSING_DATA 
     || result == TextToSpeech.LANG_NOT_SUPPORTED) { 
      Log.e("TTS", "This Language is not supported"); 
     } else { 
      btnSpeak.setEnabled(true); 
      //for checking 
      if(btnSpeak.isEnabled()) 
      { 
       Toast.makeText(SimpleAndroidOCRActivity.this, "Button should work!", Toast.LENGTH_SHORT).show(); 
      } 
      else 
      { 
       Toast.makeText(SimpleAndroidOCRActivity.this, "Button should not work!", Toast.LENGTH_SHORT).show(); 
      } 
     } 

    } else { 
     Log.e("TTS", "Initilization Failed!"); 
    } 

} 

इस स्थिति की जांच करने के लिए और भाषा आवंटित करने के लिए है अंदर आगे के उपयोग के लिए टीटीएस। मुझे टोस्ट मिलता है क्योंकि "बटन काम करना चाहिए" लेकिन यह सक्षम नहीं होता है। ऐसा क्यों है? आसपास क्या काम है?

मैं के रूप में .xml फ़ाइल में है,

<Button 
    android:id="@+id/button1" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:layout_width="200dp" 
    android:enabled="false" 
    android:text="@string/tts_text" /> 

मैं इसे यहाँ और फिर में सक्षम अक्षम करें और क्रम में सक्षम होना चाहिए ??

+0

जांच करें कि क्या आप सही आईडी – stinepike

+0

साथ बटन प्रारंभ हाँ, मैं सही आईडी के साथ की है। – iMan

उत्तर

11
@Override 
public void onInit(int status) { 

    if (status == TextToSpeech.SUCCESS) { 

     int result = tts.setLanguage(Locale.US); 

     if (result == TextToSpeech.LANG_MISSING_DATA 
     || result == TextToSpeech.LANG_NOT_SUPPORTED) { 
      Log.e("TTS", "This Language is not supported"); 
     } else { 
      btnSpeak.setEnabled(true); 
      //for checking 
      if(btnSpeak.isEnabled()) 
      { 
       btnSpeak.setOnClickListener(new View.OnClickListener() { 

        @Override 
        public void onClick(View view) { 
         YourVoicemethod(); 

         Toast.makeText(SimpleAndroidOCRActivity.this, "Button should work!", Toast.LENGTH_SHORT).show(); 
        } 


       }); 
      } 
      else 
      { 
       Toast.makeText(SimpleAndroidOCRActivity.this, "Button should not work!", Toast.LENGTH_SHORT).show(); 
      } 
     } 

    } else { 
     Log.e("TTS", "Initilization Failed!"); 
    } 

} 
+0

यह या तो काम नहीं करता है।अगर मैं इसे सब छोड़ देता हूं और दोनों बटन सक्षम होते हैं, जब मैं दूसरे बटन पर क्लिक करता हूं तो मुझे ध्वनि नहीं मिलती है, वह क्यों होगा? – iMan

+0

बटन मेथड पर क्लिक कहां है? –

+1

ऊपर अपडेट किए गए कोड को आजमाएं –

5

आप भी setClickable

btnSpeak.setClickable(true); 
btnSpeak.setEnabled(true); 

उपयोग करने के लिए, राज्य

//for checking 
if(btnSpeak.isEnabled()) 
{ 
    Toast.makeText(SimpleAndroidOCRActivity.this, "Button should work!", Toast.LENGTH_SHORT).show(); 
} 
else 
{ 
    Toast.makeText(SimpleAndroidOCRActivity.this, "Button should not work!", Toast.LENGTH_SHORT).show(); 
} 
+0

क्षमा करें, मैंने उपयोग किया है सक्षम है, इसे यहां जांचते समय गलती की है। हालांकि क्लिक करने योग्य के साथ कोशिश करेंगे। – iMan

+0

कोई भाग्य नहीं, काम नहीं करता है। बटन अभी भी भूरे रंग से बाहर है। – iMan

+1

उपयोग setFocusuble (सही) और setFocusubleInTouchmode (सही) –

3

अपने बटन दबाने की जाँच करें या नहीं और अपने कोड लिखने की जाँच करने के isEnabled() उपयोग किया है।

नमूना कोड।

if(button2.isPressed()){ 
button2.setEnabled(false); 
button1.setEnabled(true); 
} 
else if(button1.isPressed()){ 
button1.setEnabled(false); 
button2.setEnabled(true); 
} 

मुझे आशा है कि यह आपकी मदद करेगा।

+0

क्षमा करें, यह भी काम नहीं करता है। – iMan

1

आप अक्षम द्वारा प्राप्त कर सकते हैं और बटन

यहाँ की दृश्यता को सक्षम करने के लिए एक उदाहरण

View button = findViewById(R.id.buttonid); 
button.setVisibility(View.GONE); 
+0

धन्यवाद, यह काम करता है। हालांकि मुझे अभी भी आश्चर्य है कि सक्षम रनटाइम में क्यों काम नहीं करेगा, अगर मुझे कोई संभावित समाधान नहीं मिलता है तो मैं आपको जवाब के रूप में चुनूंगा। एक बार फिर आपका धन्यवाद। – iMan

0

उपयोग एक दोनों बटन

button1.setOnClickListener(listener); 
button2.setOnClickListener(listener); 

listener = new OnClickListener({ 
    @Override 
    public void onClick(View v) { 
     switch(button_id){ 
      case id1: 
      button2.setEnabled(false); 
      button1.setEnabled(true); 
      break; 
      case id2: 
      button1.setEnabled(false); 
      button2.setEnabled(true); 
      break; 
     } 
    } 
}); 
2

हो सकता है के लिए श्रोता है बहुत देर हो चुकी जवाब देने के लिए है और आप पहले से ही एक समाधान पाया है, लेकिन आप अपनी नई स्थिति के अनुसार खुद को पुनः बनाने का बटन मजबूर करने के लिए अमान्य उपयोग कर सकते हैं:

btnSpeak.setEnabled(true); 
btnSpeak.invalidate(); 
संबंधित मुद्दे