2012-11-14 6 views
6

にテキスト私は私が前にでのAndroidでの開発のほぼ3年間を持ったことがない問題を抱えている...のsetTextは、私は写真を撮りたいと絵の後でのEditText

を設定しません。活動のEditTextが明らかになります。私がやっているのは、EditTextの値をgetText().toString()を使って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); 
     } 
    } 

namedescriptionは、グローバルEditTextstempSpotNameあるとtempSpotDescはグローバルStringsです。

どのようにテキストを設定できますか?

+1

レイアウトXMLコードが表示されることがありますか?あなたはname.setText(tempSpotName)に到達しますか? ?これをデバッグしましたか? – Goot

+0

チェックするだけですが、setTextが呼び出されていますが、正しく表示されていませんか?それが呼び出されないようにするif文はありませんか? (setTextが動作するはずなので、ちょうど2回チェックする) – AJak

+0

あなたは 'setText()'を他の場所で呼び出していますか?おそらく 'onResume()'にありますか? – Sam

答えて

14

onActivityResult()がに戻ったときに呼び出される最後のメソッドではありませんアクティビティ。あなたはthe Life Cycleのメモリをドキュメントでリフレッシュすることができます。 :)

コメントで説明したように、onResume()のようなメソッドでsetText()を再度呼び出すと、onActivityResult()に設定されたテキストよりも優先されます。

同じことがFragmentsの場合は、onViewStateRestored()メソッド(API 17で追加されたメソッド)で更新する必要があります。

+0

onResume()の変更によっても、onNewIntent()の変更がオーバーライドされます。 –

+0

同じことがFragmentsの場合、API 17で追加されたonViewStateRestored()メソッドで更新する必要があります。 – Eugene

3

まず、これをデバッグする必要があります。

TextWatcherというクラスがあります。これは、Textbox.Textが変更されるたびに呼び出されます。したがって、この問題をデバッグして処理する方が簡単です。 URL:実装の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. は通常通りのsetTextあなたのEditText
  2. 使用を再バインド
  3. あなたの活動にあなたのレイアウトをリロードします。このサンプルコードで

、私は、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"); 

変更を設定するのと同じ問題

に直面していました。

関連する問題