2016-02-25 28 views
0

我在android中是全新的,但我認爲我最初學會了如何編寫簡單的代碼來讓EditText中的內容出現在TextView中。但似乎不是。誰能幫忙?先謝謝你。這是我的代碼。來自EditText的內容不會出現在TextView中。

detailsActivity.java

public class DetailsActivity extends ActionBarActivity { 

    EditText etTop; 
    TextView tvTop; 
    String cTop; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.details_activity); 

     //imageUri = Uri.parse(extras.getString("imageUri")); 
     Bitmap bitmap = getIntent().getParcelableExtra("id"); 

     ImageView imageView = (ImageView) findViewById(R.id.image); 
     imageView.setImageBitmap(bitmap); 

     etTop = (EditText) findViewById(R.id.etTop); 
     tvTop = (TextView) findViewById(R.id.tvBottom); 
     cTop = etTop.getText().toString(); 
     tvTop.setText(cTop); 

    } 
} 

details_activity.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:background="#b72828"> 

    <ImageView 
     android:id="@+id/image" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:scaleType="fitCenter" /> 

    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="80dp" 
     android:id="@+id/etTop" 
     android:hint="Enter Top Text" 
     android:textColor="@color/white" 
     android:clickable="true" 
     android:gravity="center" 
     android:inputType="textCapWords" 
     android:maxLines="2" 
     android:textColorHint="#fdfdfd" 
     android:textSize="30dp" 
     android:textStyle="bold" /> 

    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="30dp" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="" 
     android:id="@+id/tvBottom" 
     android:layout_above="@+id/etBottom" 
     android:layout_centerHorizontal="true" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Create" 
     android:id="@+id/cButton" 
     android:layout_gravity="center_horizontal|bottom" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" 
     android:clickable="false" /> 

    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="80dp" 
     android:id="@+id/etBottom" 
     android:hint="Enter Bottom Text" 
     android:textColor="@color/white" 
     android:layout_gravity="center_horizontal" 
     android:clickable="true" 
     android:gravity="center" 
     android:inputType="textCapWords" 
     android:maxLines="2" 
     android:textColorHint="#fdfdfd" 
     android:textSize="30dp" 
     android:textStyle="bold" 
     android:layout_above="@+id/cButton" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" /> 


    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="30dp" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="" 
     android:id="@+id/tvTop" 
     android:layout_below="@+id/etTop" 
     android:layout_centerHorizontal="true" /> 

</RelativeLayout> 

回答

0

原因:

cTop = etTop.getText().toString(); 
tvTop.setText(cTop); 

,即會被創建活動的執行。此時,您無法在EditText中輸入任何文字。當你這樣做時,這段代碼已經被執行了。因此,您需要從EditText中獲取文本,並在實際輸入文本時將其設置爲TextView

解決方案:

刪除上面提到的兩行代碼並添加此

etTop.addTextChangedListener(new TextWatcher() { 
    public void afterTextChanged(Editable s) { 
     tvTop.setText(s.toString()); 
    } 

    public void beforeTextChanged(CharSequence s, int start,int count, int after) {} 

    public void onTextChanged(CharSequence s, int start,int before, int count) {} 
}); 

現在每次你會改變文本EditTextTextView將自動更新。

+0

謝謝你的回答。我用你的代碼完全像你說的,它的工作原理。 –

+0

@PinkeshS:如果它幫助你,那麼請不要忘記接受它作爲你的答案。 – Rohit5k2

0

嘗試這樣做:

etTop.addTextChangedListener(new TextWatcher() { 
      @Override 
      public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

      } 

      @Override 
      public void onTextChanged(CharSequence s, int start, int before, int count) { 
       tvTop.setText(s); 
      } 

      @Override 
      public void afterTextChanged(Editable s) { 
       //.. Or set it here if this is desired behavior 
      } 
     }); 

你的代碼更改的EditText不聽,而不是你的代碼說,現在讓我看看文本,而不是聽文本被添加到編輯文本。

所以話說回來,刪除這些行:

cTop = etTop.getText().toString(); 
    tvTop.setText(cTop); 

,並添加上面的代碼片斷在它的地方。

祝你好運,快樂編碼!

+0

謝謝你的回答。 –