У меня проблема с отображением тостового сообщения. Я хочу, чтобы он отображался при первом нажатии кнопки, чтобы пользователь знал, что приложение работает (в моем случае, генерируется QR-код). Если я помещаю тост в начале улова, он не отображается сразу после нажатия кнопки. Тост отображается только после генерации и отображения QR-кода. Кроме того, тост отображается (после отображения QR-кода) на моем эмуляторе Android, но не отображается на моем физическом устройстве android (я разрешил разрешения для приложений), если я размещаю его в начале попытки try. Он будет отображаться только на моем физическом устройстве, если тост находится в конце попытки перехвата. Это меня озадачило. Я попытался использовать ProgressBar, который будет запускаться при нажатии кнопки и завершаться после отображения QR-кода, но это оказалось трудным для реализации. Я думал, что тост будет легкой альтернативой, поскольку я использовал их в своем проекте без каких-либо проблем до сих пор. Если кто-нибудь может помочь мне понять, как можно заставить тост отображаться сразу после нажатия кнопки, а не после того, как QR-код будет сгенерирован и отображен, это было бы очень полезно. В качестве альтернативы, если кто-то может помочь мне с включением индикатора выполнения (круга) для запуска после нажатия кнопки и остановки после отображения QR-кода, это также будет очень цениться, так как я считаю, что это было бы наиболее идеальным решением.
Пожалуйста, смотрите код ниже:
publi c класс Generate extends AppCompatActivity {
public final static int QRcodeWidth = 500 ;
private static final String IMAGE_DIRECTORY = "/QR_Code_Generated";
Bitmap bitmap;
private EditText etQr;
private ImageView ivGenerated;
private Button btn;
private Button clrBtn;
private Button shareBtn;
private ProgressBar progressBar;
private int progressStatus = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_generate);
ivGenerated = (ImageView) findViewById(R.id.iv_generated);
etQr = (EditText) findViewById(R.id.generate_input);
btn = (Button) findViewById(R.id.button);
clrBtn = (Button) findViewById(R.id.clearButton);
shareBtn = (Button) findViewById(R.id.shareButton);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (etQr.getText().toString().trim().length() == 0) {
} else {
try {
Toast toast1 = Toast.makeText(Generate.this, "Please Wait, Your QR Code is Generating & will be Saved to your Device... ", Toast.LENGTH_SHORT);
toast1.show();
bitmap = TextToImageEncode(etQr.getText().toString());
ivGenerated.setImageBitmap(bitmap);
String path = saveImage(bitmap); //give read write permission
// Toast.makeText(Generate.this, "QR Code saved to -> " + path, Toast.LENGTH_SHORT).show(); (if I include this second toast it does not display the first toast1)
} catch (WriterException e) {
e.printStackTrace();
}
}
}
});