Java 设置文本编辑文本
我正在开发QR扫描仪应用程序。成功扫描后,扫描的信息进入警报框。从那里,我需要信息转到EditText字段或跳过整个警报对话框。必须转到EditText的结果位于下面的函数中Java 设置文本编辑文本,java,android,android-studio,Java,Android,Android Studio,我正在开发QR扫描仪应用程序。成功扫描后,扫描的信息进入警报框。从那里,我需要信息转到EditText字段或跳过整个警报对话框。必须转到EditText的结果位于下面的函数中 public class MainActivity extends Activity implements ZXingScannerView.ResultHandler { private ZXingScannerView mScannerView; EditText editText; @SuppressLint("
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());
或者,如果您需要多次频繁更新此文本视图,请在主活动UpdateScaneReditextString值中生成方法;从你的片段中调用它
如果主活动中有HandlerResult,只需在活动中创建方法:
@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.
}
希望能有所帮助。所以如果我理解正确,您尝试扫描二维码,然后将其设置为EditText2,然后再次扫描产品并尝试在EditText4中进行设置 所以试着让一些人这样想:
public void handleResult(Result result) {
//handle result
Log.v("handleResult", result.getText());
if(edittext2.getText().equals("")){
edittext2.setText(result.getText());
}else{
edittext4.setText(result.getText())
}
mScannerView.stopCamera(); setContentView(R.layout.activity_main);
//resume scanning
mScannerView.resumeCameraPreview(this);
}
很好,请接受我的回答,谢谢我。可能对其他人有帮助。这意味着您试图设置文本的editText为空,这意味着它没有像>EditTextfindViewByIdR.id.viewid;不,不幸的是,错误nullpointer并没有消失,但在EditTextOK中没有设置任何内容,步骤1:生成一个全局变量Edittext edt;步骤2:在setContentViewR.layout.activity\u main下面的oncreate中添加以下行;edt=EditTextfindViewByIdR.id.viewid;其中R.id.viewid是在xml中为result.getText的edt.check值定义的id名称;