Java 每次按键时更新TextView
我试图做的是用每个关键事件更新TextView——基本上是将EditText的内容复制到TextView。由于某种原因,它不起作用。代码如下:Java 每次按键时更新TextView,java,android,view,switch-statement,Java,Android,View,Switch Statement,我试图做的是用每个关键事件更新TextView——基本上是将EditText的内容复制到TextView。由于某种原因,它不起作用。代码如下: View.OnKeyListener keyHandler = new OnKeyListener(){ public boolean onKey(View v, int keyCode, KeyEvent event) { TextView id = (TextView)findViewById(R.i
View.OnKeyListener keyHandler = new OnKeyListener(){
public boolean onKey(View v, int keyCode, KeyEvent event) {
TextView id = (TextView)findViewById(R.id.previewEmplIdData);
TextView fn = (TextView)findViewById(R.id.previewNameData);
TextView ttl = (TextView)findViewById(R.id.previewTitleData);
TextView mgr = (TextView)findViewById(R.id.previewMgrData);
TextView loc = (TextView)findViewById(R.id.previewLocData);
TextView strt = (TextView)findViewById(R.id.previewStartData);
String text = "";
EditText et;
switch(v.getId()){
case R.id.etFirstName:
et = (EditText)v; // must first switch to a text field
text = et.getText().toString();
fn.setText(text);
break;
case R.id.etLastName:
et = (EditText)v;
text = et.getText().toString();
break;
case R.id.etEmplId:
et = (EditText)v;
text = et.getText().toString();
id.setText(text);
break;
case R.id.etStartDate:
et = (EditText)v;
text = et.getText().toString();
strt.setText(text);
break;
case R.id.etTitle:
et = (EditText)v;
text = et.getText().toString();
ttl.setText(text);
break;
case R.id.spinnerLocation:
break;
case R.id.spinnerManager:
break;
}
return false;
}
};
基本上我是通过按键切换视图id,然后将视图转换为编辑文本。我真的不知道为什么这不起作用……我一直很不走运,switch语句都起作用了。有什么帮助吗?您将此
钥匙处理程序应用于何处?如果您刚刚创建并初始化了它,但没有在任何视图中使用,它将根本不会运行。在哪里应用此keyHandler
?如果您刚刚创建并初始化了它,但没有在任何视图中使用,它将根本不会运行。OnKeyListener不能使用软键盘。您应该实现跟踪文本更改。另请注意。OnKeyListener不能使用软键盘。您应该实现跟踪文本更改。另请注意。我刚刚用以下方法解决了同样的问题:
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;
import android.widget.TextView;
public class InputField extends AppCompatActivity {
private EditText input;
private TextView displayString;
private String writeText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_input_field);
input = (EditText) findViewById(R.id.editText);
displayString = (TextView) findViewById(R.id.displayStringText);
input.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) {
writeText = input.getText().toString();
displayString.setText(writeText);
}
});
}
}
我刚刚用以下方法解决了同样的问题:
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;
import android.widget.TextView;
public class InputField extends AppCompatActivity {
private EditText input;
private TextView displayString;
private String writeText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_input_field);
input = (EditText) findViewById(R.id.editText);
displayString = (TextView) findViewById(R.id.displayStringText);
input.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) {
writeText = input.getText().toString();
displayString.setText(writeText);
}
});
}
}
哪个文本视图不显示文本?没有显示任何内容..没有任何更改。哪个文本视图不显示文本?没有显示任何内容..没有任何更改。哦…可能就是这样。如何将其应用于当前视图getContext().setOnKeyListener()
?如果要将其应用于“活动内容”视图,最好将“活动”中的setContentView(R.layout.activity\u layout)
更改为类似于view activityView=LayoutFlater.from(this).充气(R.layout.activity\u layout);setContentView(activityView)
并在创建keyHandler
后使用activityView.setOnKeyListener(keyHandler)代码>。但@woodshy的想法实际上更好:)据我所知,您可以使用活动的onKeyDown
事件拦截虚拟键盘。但是你必须使用键码,而不是字符串。谢谢你的帮助。我仍然有问题,它的工作正常。我想我会看看woodshy的解决方案。谢谢哦…可能就是这样。如何将其应用于当前视图getContext().setOnKeyListener()
?如果要将其应用于“活动内容”视图,最好将“活动”中的setContentView(R.layout.activity\u layout)
更改为类似于view activityView=LayoutFlater.from(this).充气(R.layout.activity\u layout);setContentView(activityView)
并在创建keyHandler
后使用activityView.setOnKeyListener(keyHandler)代码>。但@woodshy的想法实际上更好:)据我所知,您可以使用活动的onKeyDown
事件拦截虚拟键盘。但是你必须使用键码,而不是字符串。谢谢你的帮助。我仍然有问题,它的工作正常。我想我会看看woodshy的解决方案。谢谢谢谢我不知道这件事。当我使用软键盘时,它开始工作并强制关闭。谢谢。我不知道这件事。我让它工作,当我使用软键盘时,它强制关闭。