2012-11-14 9 views
6

के लिए पाठ निर्धारित नहीं करता है मैं एक समस्या यह है कि मैं Android के साथ विकसित करने की पहले में लगभग तीन साल के लिए किया था कभी नहीं किया है ...setText EditText

आ रही है मैं एक तस्वीर लेने के लिए चाहते हैं और बाद तस्वीर है ले लिया गया, गतिविधि के EditText एस स्पष्ट हो गया। मैं जो कर रहा हूं वह चित्र लेने के बाद उन्हें पुनर्स्थापित करने के लिए getText().toString() का उपयोग करके EditText से Strings के मान सेट करें।

तारों को डेटा के साथ पूरी तरह से संग्रहीत किया जाता है, लेकिन जब मैं setText का उपयोग करता हूं, यह काम नहीं करता है ... अजीब बात यह है कि setHint काम करता है!

यह कैसे हो सकता है?

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) { 
      if (resultCode == RESULT_OK) { 
       // Image captured and saved to fileUri specified in the Intent 

       grabImage(imgView); 

       for (int u = 0; u <= 2; u++) 
       { 
        if (savedImgs[u].equals("")) 
        { 
         imgs = u + 1; 
         savedImgs[u] = photo.toString(); 
         break; 
        } 
       } 

       /*Bitmap thumbnail = (Bitmap) data.getExtras().get("data"); ---> It is a small bitmap, for icons... 
       imgView.setImageBitmap(thumbnail); 
       imgView.setVisibility(View.VISIBLE);*/ 

      } else if (resultCode == RESULT_CANCELED) { 
       // User cancelled the image capture 
      } else { 
       Toast.makeText(this, "Image couldn't be taken. Try again later.", Toast.LENGTH_LONG).show(); 
      } 
     } 

     if (!tempSpotName.equals("") || !tempSpotDesc.equals("")) { 

      name.setText(tempSpotName); 
      description.setText(tempSpotDesc); 
     } 
    } 

name और description वैश्विक EditTexts और tempSpotName और tempSpotDesc वैश्विक Strings हैं:

यहाँ कोड मैं का उपयोग कर रहा है।

मैं टेक्स्ट कैसे सेट कर सकता हूं?

+1

क्या हम आपका लेआउट xml कोड देख सकते हैं? क्या आप name.setText तक पहुंचते हैं (tempSpotName); ? क्या आपने इसे डीबग किया था? – Goot

+0

बस जांच कर रहा है, लेकिन सेटटेक्स्ट को बुलाया जा रहा है लेकिन सही प्रदर्शन नहीं कर रहा है? अगर कथन इसे बुलाए जाने से रोक नहीं रहा है? (सेटटेक्स्ट काम करने के बाद से केवल दोहरी जांच) – AJak

+0

क्या आप कहीं भी 'setText()' को कॉल कर रहे हैं? संभवतः 'ऑनस्यूम()' में? – Sam

उत्तर

14

onActivityResult() पिछले विधि है जब एक ओर लौटने नहीं बुलाया है गतिविधि। आप दस्तावेज़ों में the Life Cycle की अपनी याददाश्त को रीफ्रेश कर सकते हैं। :)

जैसा कि हमने टिप्पणियों में चर्चा की है, यदि आप onResume() जैसी विधियों में फिर से setText() पर कॉल करते हैं तो यह onActivityResult() में किसी भी टेक्स्ट सेट को ओवरराइड करेगा।

समानता के लिए जाता है, आपकोViewStateRestored() विधि (जिसे एपीआई 17 में जोड़ा गया था) में अपडेट करने की आवश्यकता है।

+0

ऑनयूज़ेंट() में कोई भी बदलाव ऑनइन्टेंट() पर परिवर्तनों को ओवरराइड करता है। –

+0

फ्रैगमेंट्स के लिए भी यही है, आपको ऑनव्यूस्टेटरस्टेड() विधि (जो एपीआई 17 में जोड़ा गया था) में अपडेट करने की आवश्यकता है। – Eugene

3

सबसे पहले आपको इसे डीबग करना होगा।

टेक्स्टवॉचर नामक एक कक्षा है। इसे हर बार आपका टेक्स्टबॉक्स कहा जाएगा। टेक्स्ट बदल जाएगा। इसलिए समस्या को डीबग करना और संभालना आसान है। यूआरएल: http://developer.android.com/reference/android/text/TextWatcher.html

कार्यान्वयन के लिए उदाहरण:

name.addTextChangedListener (नई TextWatcher() {

@Override 
    public void afterTextChanged(Editable s) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onTextChanged(CharSequence s, int start, int before, int count) { 

     doSomething(); 



    } 

}); 

गुड लक :)

0

आप एक EditText.SetText ("blablabla ...") को मजबूर कर सकते हैं; अपने OnActivity अंदर 3 आसान चरणों में परिणाम:

  1. अपनी गतिविधि में अपने लेआउट को पुनः लोड करें
  2. अपने EditText rebind हमेशा की तरह
  3. उपयोग setText।

इस नमूना कोड में, मैं के साथ एक URL स्ट्रिंग और इरादे गुजरती हैं और इसे लिखने के एक TextView में:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{  
    if (resultCode == RESULT_OK) 
    { 
     QRdata= data.getStringExtra("QRURL"); 

     if (QRdata.length()>0) 
     { 
          //Step1 
      setContentView(R.layout.activity_confirmpackage); 
          //Step2 
      TextView qrtxt=(TextView)this.findViewById(R.id.qrurl); 
          //Setp 3,Voilà! 
      qrtxt.setText(QRdata.toString()); 
     } 
2

कभी-कभी बदलते onactivity परिणाम में edittext काम नहीं कर रहा।मैं भी onactivityresult

edittext.post(new Runnable(){ 
edittext.settext("yourtext"); 
}); 

यह मेरे लिए काम किया में निम्न के बजाय

edittext.settext("yourtext"); 

परिवर्तन स्थापित करने की एक ही समस्या का सामना करना पड़ा