问题描述
老实说,我不知道发生了什么,但是调试时没有遇到下面列出的事件,这怎么可能? 我不知道在这种情况下还可以提供哪些其他信息。
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.KeyEvent;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
public class MarkerActivity extends AppCompatActivity {
private TextView titleTv, hashtagTv, dateTv, colorTv;
private EditText test_edit;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_marker);
titleTv = (TextView) findViewById(R.id.title_info);
hashtagTv = (TextView) findViewById(R.id.hashtag_info);
dateTv = (TextView) findViewById(R.id.date_info);
colorTv = (TextView) findViewById(R.id.color_info);
test_edit = (EditText) findViewById(R.id.test_edit);
test_edit.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (event.getAction() == KeyEvent.KEYCODE_SPACE) {
test_edit.setText(test_edit.getText().toString() + " #");
return true;
}
return false;
}
});
test_edit.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.KEYCODE_SPACE) {
test_edit.setText(test_edit.getText().toString() + " #");
return true;
}
return false;
}
});
test_edit.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) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
Bundle bundle = getIntent().getExtras();
if (bundle != null && bundle.containsKey("marker_title")) {
String marker_title = bundle.getString("marker_title");
if (marker_title != null) {
MarkerModel markerModel = DatabaseHelper.get().getMarker(marker_title);
titleTv.setText("Title: " + markerModel.getTitle());
dateTv.setText("Date: " + markerModel.getDay() + "/" + markerModel.getMonth() + "/" + markerModel.getYear());
hashtagTv.setText("Hashtags: " + markerModel.getHashtags());
colorTv.setText("Color: " + markerModel.getColor());
}
}
}
}
XML格式
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/color_info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="color" />
<TextView
android:id="@+id/date_info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="date" />
<TextView
android:id="@+id/title_info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="title" />
<TextView
android:id="@+id/hashtag_info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="hashtags" />
<EditText
android:id="@+id/test_edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
1楼
您需要在xml的imeOption
中指定imeOption
,然后才能响应setOnEditorActionListener()
。
<EditText
android:id="@+id/test_edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content""
android:inputType="text"
android:imeOptions="actionSend" />
并且仅为了通知您这种工作, textWatcher
是一个更好的选择。
一直有效。
2楼
我在TextWatcher中设置了一些日志,它实际上显示了它。 断点仍然没有达到,似乎是Android Studio的问题..但是可能是什么? 重新启动IDE,没有成功
3楼
我认为您必须这样做:
test_edit.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) { }
@Override
public void afterTextChanged(Editable s) {
if(s.toString().endsWith(" "))
{
test_edit.setText(test_edit.getText().toString() + " #");
test_edit.setSelection(test_edit.length());
}
}
});
让其他两个听众保持评论状态。 试试吧。