java - 设置文本编辑文本
问题描述
我正在开发一个 QR 扫描仪应用程序。成功扫描后,扫描的信息将进入警报框。从那里,我需要信息才能转到 EditText 字段或跳过整个警报对话框。必须转到 EditText 的结果在下面的函数中。
public class MainActivity extends Activity implements ZXingScannerView.ResultHandler {
private ZXingScannerView mScannerView;
EditText editText;
@SuppressLint("CutPasteId")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = findViewById(R.id.editText4);
EditText delete2;
Button button3;
button3 = findViewById(R.id.button3);
delete2 = findViewById(R.id.editText2);
final EditText finalEdittext = delete2;
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Clear EditText
finalEdittext.getText().clear();
}
});
EditText delete4;
Button button4;
delete4 = findViewById(R.id.editText4);
button4 = findViewById(R.id.button4);
final EditText finalEdittext1 = delete4;
button4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Clear EditText
finalEdittext1.getText().clear();
}
});
}
public void onClick(View v){
mScannerView = new ZXingScannerView(this);
setContentView(mScannerView);
mScannerView.setResultHandler(this);
mScannerView.startCamera();
}
@Override
protected void onPause() {
super.onPause();
mScannerView.stopCamera();
}
@Override
public void handleResult(Result result) {
//handle result
Log.v("handleResult", result.getText());
//editText.setText(result.toString());
// editText.invalidate();
mScannerView.stopCamera(); //setContentView(R.layout.activity_main);
//resume scanning
//mScannerView.resumeCameraPreview(this);
updateScannerData(1,result.getText());
}
public void updateScannerData(int scanType, String scannedCode){
editText.setText(scannedCode);
//editText.invalidate();
//editText.requestLayout();
//finish();
//startActivity(getIntent());
this.recreate();
}
}
我只使用一个主要活动,这是结果必须去的 EditText 的 XML。
<EditText
android:id="@+id/editText2"
android:layout_width="match_parent"
android:layout_height="61dp"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginTop="197dp"
android:ems="10"
android:hint="@string/scan_order"
android:inputType="textPersonName"
android:visibility="visible"
tools:backgroundTint="@android:color/holo_red_light" />
任何帮助是极大的赞赏。提前致谢。
解决方案
这里可以有不止一种方法,您可以:
Edittext edt = (EditText)findViewById(R.id.viewid);
edt.setText(result.getText());
或者,如果您需要多次频繁更新此文本视图,请在主活动 updateScannerEditText(String value) 中创建方法;并从您的片段中调用它。
如果您的主要活动本身有 handleResult() ,只需在活动中创建方法:
@Override // move your setContentView() method inside activity oncreate()
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void handleResult(Result result) {
//handle result
Log.v("handleResult", result.getText());
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Scan Result");
builder.setMessage(result.getText());
AlertDialog alertDialog = builder.create();
alertDialog.show();
mScannerView.stopCamera();
updateScannerData(1,result.gettext());
//resume scanning
mScannerView.resumeCameraPreview(this);
}
方法实现:
private void updateScannerData(int scanType, String scannedCode){
edt.setText(scannedCode);//edt is the editTextView that you have declared in you xml.
}
希望能帮助到你。
推荐阅读
- ansible - Ansible:从环境变量中的路径复制文件
- typo3 - 扩展中的多个控制器
- java - 带有分隔符和值的拆分字符串数组
- tensorflow - 如何将数字列表作为单个特征传递给神经网络?
- javascript - 存储在变量中会提高性能吗?var, let, const 也会影响性能吗?
- javascript - 从 javascript 函数返回 json 数据
- http - OpenID 连接 - 在用户向我的服务器发出任何请求时,我是否需要在谷歌验证令牌?
- haskell - Haskell中选择排序的功能性非尾递归版本
- powershell - 在多台服务器上运行 .bat 文件
- java - 在 Java 8 流 foreach 中查找元素的索引