EditText中的内容不会出现在TextView中。

时间:2016-02-25 17:38:56

标签: android

我是android的新手,但我想我至少学会了如何编写简单的代码,让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>

2 个答案:

答案 0 :(得分: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);

并在其位置添加上述代码段。

祝你好运,快乐的编码!

答案 1 :(得分: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) {}
});

现在,每当您更改EditText中的文字时,TextView都会自动更新。

相关问题