我想问一下如何在二维码生成器中刷新图像视图,我创建了一个带有时间选择器和数字选择器的二维码生成器,我想知道如何刷新我的二维码生成器,因为当我尝试重做时,它当我在时间选择器和数字选择器上更改某些内容时显示相同的二维码。
二维码生成器代码:
public class QRCode extends Activity {
Button doneBtn;
ImageView qrIv;
TextView minute;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.qrcode);
minute = findViewById(R.id.set_minute);
doneBtn = findViewById(R.id.btnDone);
qrIv = findViewById(R.id.ivQr);
doneBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(QRCode.this, MainMenu.class);
startActivity(intent);
}
});
Intent intent = getIntent();
String data = intent.getStringExtra("data");
MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
try {
BitMatrix bitMatrix = multiFormatWriter.encode(data, BarcodeFormat.QR_CODE, 400, 400);
BarcodeEncoder barcodeEncoder = new BarcodeEncoder();
Bitmap bitmap = barcodeEncoder.createBitmap(bitMatrix);
qrIv.setImageBitmap(bitmap);
InputMethodManager manager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
manager.hideSoftInputFromWindow(minute.getApplicationWindowToken(), 0);
} catch (WriterException e) {
e.printStackTrace();
}
}
}
数字选择器和时间选择器代码:
public class Visitor extends Activity {
String def = "00 ";
TimePicker timeTp;
NumberPicker minNp;
String[] minutesArray;
Button createBtn;
Integer id = 12345;
String space = " ";
String paddedId;
StringBuilder spaceId = new StringBuilder();
String newId;
String data;
@SuppressLint("MissingInflatedId")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.visitor);
minNp = findViewById(R.id.npMin);
minNp.setMaxValue(5);
minNp.setMinValue(0);
minutesArray = new String[] {"15","30","45","60","75","90"};
minNp.setDisplayedValues(minutesArray);
timeTp = findViewById(R.id.tp);
createBtn = findViewById(R.id.btnCreate);
timeTp.setIs24HourView(true);
paddedId = String.format("%08d", id);
for(int i = 0; i < paddedId.length(); i += 2) {
spaceId.append(paddedId.substring(i, i + 2)).append(" ");
}
newId = spaceId.toString().trim();
Map<String,String> parameters = new HashMap<String,String>();
int value = minNp.getValue();
parameters.put("mins", Integer.toString(value));
data = def + newId + space + String.format("%02d", timeTp.getHour()) + space + String.format("%02d", timeTp.getMinute()) + space + minutesArray[minNp.getValue()] + space;
createBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(Visitor.this, QRCode.class).putExtra("data", data));
}
});
}
}
这可能涉及从文件加载 image 或将其转换为可绘制对象,具体取决于您使用的框架或编程语言。