我是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>
答案 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
都会自动更新。