2011-12-18 86 views
0

好吧,我正在使用的代碼:如何顯示EditText文本?

EditText editText = (EditText) findViewById(R.id.editText1); 
String value = editText.getText().toString(); 

從一個EditText獲取文本,但我怎麼得到它與一個TextView顯示?另外,如果TextView在不同的Activity中,代碼如何改變?

像這樣:

enter image description here

好吧,我試着這樣做:

EditText input = (EditText) findViewById(R.id.editText1); 
    String thing = input.getText().toString(); 

    TextView display = (TextView) findViewById(R.id.textView1); 
    String text = display.getText().toString(); 

    text.setText(thing); 

但我對得到一個錯誤 「的方法的setText(字符串)是不確定的String類型」此行:

text.setText(thing); 
+0

不能代替我的代碼中的所有硬編碼字符串文字一個聰明的想法,更新每次用戶改變文本的佈局...文本變化可以相當快打字的時候發射,但也有特別刪除字符時退格。最好是有一個按鈕,當用戶準備更新佈局更新。 – Ozzy

回答

0

我怎麼得到它與一個TextView顯示?

這裏是代碼將更新顯示(所述TextView的在你的實施例中使用)和(在實施例中使用的的EditText輸入的內容每當輸入鍵被壓在鍵盤(我看見你這要求在評論到另一個答案):上述

// get reference to the TextView 
    final TextView display = (TextView) findViewById(R.id.textView1); 

    // get reference to EditText and set listener to update TextView 
    final EditText input = (EditText) findViewById(R.id.editText1); 
    input.setOnKeyListener(new OnKeyListener() { 
     @Override 
     public boolean onKey(View v, int keyCode, KeyEvent event) { 
      if ((event.getAction() == KeyEvent.ACTION_DOWN) && 
        (keyCode == KeyEvent.KEYCODE_ENTER)) { 
        display.setText(input.getText()); 
        return true; 
       } 
       return false; 
     } 
    }); 

代碼是一個單一的活動內。

此外,如果TextView在不同的Activity中,代碼如何更改?

如果顯示(所述TextView的在你的例子)是在另一個活動,則一個快速的方法來更新它是存儲輸入(所述的EditText在你的例子),爲的值一個SharedPreference和具有顯示 Activity的的onResume讀取在值:

// Activity with display 
public class DisplayActivity extends Activity { 
    private TextView display; 

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

     // get reference to the TextView 
     display = (TextView) findViewById(R.id.textView1); 
    } 

    public void onResume() { 
     super.onResume(); 
     String inputsValue = getSharedPreferences("myprefs", 0) 
       .getString("input", "" /** Default value*/); 

     display.setText(inputsValue); 
    } 
} 

// Activity with input 
public class InputActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     // get reference to EditText and store in SharedPreference 
     final EditText input = (EditText) findViewById(R.id.editText1); 
     input.setOnKeyListener(new OnKeyListener() { 
      @Override 
      public boolean onKey(View v, int keyCode, KeyEvent event) { 
       if ((event.getAction() == KeyEvent.ACTION_DOWN) && 
         (keyCode == KeyEvent.KEYCODE_ENTER)) { 
         getSharedPreferences("myprefs", 0).edit() 
          .putString("input", input.getText().toString()).commit(); 
         return true; 
       } 
       return false; 
      } 
     }); 
    } 
} 

你應該有一個代碼不變

+0

謝謝!那樣做了! – Cole

0

對問題1的回答:

使用TextView.setText(CharSequence text, TextView.BufferType type)使您的文本視圖顯示所需的文本。

1

要做到這一點,你需要從編輯視圖中獲取文本並設置文本視圖: 這是使用預定義的getters和setter小菜一碟。

您需要充氣文本視圖,你已經做了的EditText,然後使用.setText方法

如果TextView的是你需要發送過信息的意圖,例如一個新的活動:

startActivity(new Intent(AndroidActivity.this, Activity2.class).putExtra("user", user.getText().toString())); 

然後在你的新acitivty可以作爲

String s = getIntent().getStringExtra("user") 
0

檢索解決此特定錯誤使用

display.setText(thing); 

當前您正在將字符串設置爲另一個字符串,並且也沒有可用的settext字符串函數。 另外,如果您希望在飛行中發生這種情況(當用戶放入文本時更新textview),請使用文本觀察器。

+0

那麼我怎麼才能得到它當用戶按下返回/進入更新? – Cole

0

定義事件處理程序的EditText,每當它的文本改變提取出來,並做display.setText()

我希望幫助