2016-02-25 45 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

谢谢你的回答。 –