老实说,我不知道发生了什么,但是在调试时没有发现下面列出的任何事件,这怎么可能呢?我不知道在这种情况下提供哪些其他信息会很有用。
>
XML
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());
}
}
}
}
答案 0 :(得分:0)
在回复imeOption
的操作之前,您需要在xml的edittext中指定setOnEditorActionListener()
。
<EditText
android:id="@+id/test_edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content""
android:inputType="text"
android:imeOptions="actionSend" />
只是为了通知你这种工作textWatcher
是一个更好的选择。这总是有效的。
答案 1 :(得分:0)
我在TextWatcher中设置了一些Logs,它实际上显示了它。仍然没有打破断点,似乎这是Android Studio的一个问题..但它可能是什么?重新启动IDE,没有做到这一点
答案 2 :(得分:0)
我认为你必须这样做:
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());
}
}
});
在评论中保留其他两位听众。试试吧。