2012-11-14 24 views
6

metni ayarlayabilir ve gelmez Çıktı, aktivitenin EditText s netleşir. Yaptığım şey, resim çekildikten sonra geri yüklemek için EditText'un Strings değerini getText().toString() kullanarak ayarlamasıdır.setText ben bir resim çekmek istiyorum ben Android ile yakalanma önce neredeyse üç yıl vardı hiç bir sorun ...</p> <p>yaşıyorum EditText

Dizeler, verilerle mükemmel bir şekilde saklanır, ancak setText'u kullandığımda işe yaramıyor ... Garip olan şu ki setHint çalışıyor!

Bu nasıl olabilir?

@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 ve descriptionEditTexts ve tempSpotName ve tempSpotDescStrings geneldir geneldir:

İşte kullanıyorum kodu.

Metni nasıl ayarlayabilirim?

+1

Düzeni xml kodunuzu görebilir miyiz? Name.setText'e (tempSpotName) bile ulaşıyor musunuz; ? Bunu debug ettin mi? – Goot

+0

Sadece kontrol ediyorsun ama setText aranıyor ama doğru gösterilmiyor mu? If ifadesi çağrılmayı engelliyor mu? (sadece setText'in çalışması gerektiğinden iki kez kontrol et) – AJak

+0

'setText()' yi başka bir yerde mi arıyorsun? Muhtemelen onResume() 'de? – Sam

cevap

14

onActivityResult() bir dönerken denilen son yöntem değildir Aktivite. Dokümanlardaki the Life Cycle belleğinizi yenileyebilirsiniz. :)

setText()'u onResume() gibi yöntemlerde yeniden çağırırsanız, yorumlarda tartıştığımız gibi, bu onActivityResult()'daki tüm metin kümelerini geçersiz kılar.

Aynı Parçalar için de geçerlidir, onViewStateRestored() yönteminde (API 17'ye eklenen) güncelleştirmeler yapmanız gerekir.

+0

onResume() öğesindeki tüm değişiklikler, onNewIntent() içindeki değişiklikleri de geçersiz kılar. –

+0

Aynı Parçalar için de geçerlidir, onViewStateRestored() yönteminde (API 17'ye eklenen) güncelleştirmeler yapmanız gerekir. – Eugene

3

Öncelikle bunu ayıklamak zorundasınız.

TextWatcher adlı bir sınıf var. Bu Textbox.Text her zaman değişecek çağrılacak. Bu nedenle, bu sorunu ayıklamak ve işlemek daha kolaydır. URL: uygulanması için http://developer.android.com/reference/android/text/TextWatcher.html

Örnek:

name.addTextChangedListener (yeni 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(); 



    } 

}); 

İyi şanslar :)

0

Bir EditText.SetText ("blablabla ...") zorlayabilirsiniz; senin onActivity içindeki 3 KOLAY adımda Sonuç:

  1. sizin EditText zamanki gibi
  2. kullanım SetText Yeniden bağlama, Etkinlik içine düzeni tekrar yükle. Bu örnek kod

, bir URL ile dizesi ve niyet geçmek ve bir TextView içine yazmak:

@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

Bazı zamanlar çalışmıyor edittext sonuç onactivity değişen.Ben de bu benim için çalıştı onactivityresult

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

aşağıdakine yerine

edittext.settext("yourtext"); 

değişikliği belirleme konusunda aynı problemi

karşılaştı.