- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 onSaveInstanceState 上保存当前进度条时遇到问题。我保存当前正在进行的时间,但是当退出 Activity 并返回时恢复进度不显示剩余时间。
该类显示进度条
public class CardDetailsActivity extends AppCompatActivity {
private static final String TIME = "Time ";
@Override
protected void attachBaseContext(Context newBase) {
super.attachBaseContext(newBase);
}
private ProgressBar progressBar;
private TextView secondTimeTextView;
private int interval, currentInterval;
protected String cardName, intervalTotp, path3Decoded, getCode, uuidDevice, otpString, generateNewString, generateQrString, OtpString, NewXorString;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_card_details);
if (savedInstanceState != null){
currentInterval = savedInstanceState.getInt(TIME);
progressBar.setProgress(currentInterval);
}
Typeface custom_fonts = Typeface.createFromAsset(getAssets(), "fonts/OpenSans-Regular.ttf");
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setNavigationIcon(R.drawable.ic_restart);
progressBar = (ProgressBar) findViewById(R.id.refershProgrss);
cardName = getIntent().getStringExtra("cardName");
intervalTotp = getIntent().getStringExtra("intervalTotp");
path3Decoded = getIntent().getStringExtra("path");
otpString = getIntent().getStringExtra("otp");
Base32 code = new Base32();
byte secret[] = code.decode(otpString);
try {
getCode = OtpAlgorithm.generateTotp(secret, intervalTotp);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (InvalidKeyException e) {
e.printStackTrace();
}
OtpString = path3Decoded + getCode;
generateQrString = Cryptography.xorHex(OtpString);
interval = Integer.parseInt(intervalTotp);
TextView titleTextView = (TextView) findViewById(R.id.toolbar_title);
titleTextView.setText(cardName);
TextView subtitleTextView = (TextView) findViewById(R.id.subtitle_text);
TextView second_text = (TextView) findViewById(R.id.second_text);
TextView instantTextView = (TextView) findViewById(R.id.instant_text);
instantTextView.setTypeface(custom_fonts);
titleTextView.setTypeface(custom_fonts);
TextView generationCardTextView = (TextView) findViewById(R.id.generationCardText);
generationCardTextView.setTypeface(custom_fonts);
secondTimeTextView = (TextView) findViewById(R.id.secondTimeTextView);
secondTimeTextView.setTypeface(custom_fonts);
TextView dotTextView = (TextView) findViewById(R.id.dotTextView);
dotTextView.setTypeface(custom_fonts);
subtitleTextView.setTypeface(custom_fonts);
second_text.setTypeface(custom_fonts);
setSupportActionBar(toolbar);
UpdateQrCodeString(generateQrString);
new UpdateQrCode().execute();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.card:
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.card, menu);
return super.onCreateOptionsMenu(menu);
}
private class UpdateQrCode extends AsyncTask<Void, Integer, Integer> {
@Override
protected void onPreExecute() {
super.onPreExecute();
progressBar.setMax(interval);
}
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
progressBar.setProgress(values[0]);
currentInterval = values[0];
secondTimeTextView.setText(String.valueOf(values[0]));
}
@Override
protected Integer doInBackground(Void... params) {
for (int i = interval; i >= 0; i--) {
publishProgress(i);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
return null;
}
@Override
protected void onPostExecute(Integer integer) {
super.onPostExecute(integer);
try {
NewXorString = generateQrCodeString(otpString, path3Decoded, intervalTotp);
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
generateNewString = Cryptography.xorHex(NewXorString);
UpdateQrCodeString(generateNewString);
new UpdateQrCode().execute();
}
}
// function with update QR Code Image
private void UpdateQrCodeString(String generateStringQrCode) {
WindowManager manager = (WindowManager) getSystemService(WINDOW_SERVICE);
Display display = manager.getDefaultDisplay();
Point point = new Point();
display.getSize(point);
int width = point.x;
int height = point.y;
int smallerDimension = width < height ? width : height;
smallerDimension = smallerDimension * 3 / 4;
QRCodeEncoder qrCodeEncoder = new QRCodeEncoder(generateStringQrCode, null, Contents.Type.TEXT, BarcodeFormat.QR_CODE.toString(), smallerDimension);
try {
Bitmap bitmap = qrCodeEncoder.encodeAsBitmap();
ImageView myImageView = (ImageView) findViewById(R.id.qrCodeImageView);
myImageView.setImageBitmap(bitmap);
} catch (WriterException e) {
e.printStackTrace();
}
}
private String generateQrCodeString(String otpString, String path3String, String intervalTotp) throws InvalidKeyException, NoSuchAlgorithmException {
Base32 code = new Base32();
byte secret[] = code.decode(otpString);
String totpString = OtpAlgorithm.generateTotp(secret, intervalTotp);
return path3String + totpString;
}
@Override
public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
super.onSaveInstanceState(outState, outPersistentState);
outState.putInt(TIME, currentInterval);
progressBar.setProgress(currentInterval);
}
}
最佳答案
Docs 。如您所见,onRestoreInstanceState
在 onStart 之后调用。正如文档指出的,最简单的方法是使用 onCreate
:
if(savedInstance != null){
currentInterval = savedInstanceState.getInt(TIME);
progressBar.setProgress(currentInterval);
}
编辑:我已进行编辑
关于java - 保存实际进度progressBar onSaveInstanceState,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43980590/
我的应用程序中有一个 ProgressBar 小部件,无论我做什么,它总是显示为粗橙色(2.x 样式)而不是细蓝色(4.x 样式) . 项目构建目标设置为 Google API 4.0.3(API 级
private static ProgressDialog pDialog; pDialog = new ProgressDialog(activity); pDialog.setIndetermin
我试图让 TalkBack 阅读进度条上的进度,但运气不佳。关于如何获取该信息以便 TalkBack 可以说出来的任何想法。 谢谢 公共(public)类 MainActivity 扩展 Activi
进度条总是返回null public void calcola(View view) { final Dialog myDialog = new Dialog(this);
我正在尝试用选取框样式测试进度条,但没有成功 private void Form1_Load(object sender, EventArgs e) { Applica
我使用以下 Ruby 片段下载 a 8.9MB file . require 'open-uri' require 'net/http' require 'uri' def http_download
我为操作栏按钮尝试了两种不同的进度条样式,通过 refreshMenuItem.setActionView(R.layout.actionbar_indeterminate_progress); ac
每当我输入 fragment 时,我都会看到几秒钟的空白,然后 WebView 中的网页就会出现。 ProgressBar 好像没有显示。 这是我的 XML 文件,用于 WebView 和 Progr
我的包依赖于一个名为 progressbar 的包。有一个bug in progressbar 2.3导致Python>3.3安装失败,因此我安装了latest git repo from this
任何默认的 ProgressBar 都有一个 ClipDrawable 级别,例如,一个绿色的 Drawable 在我的设备上填充灰色背景,在其他设备上填充黄色。 我的问题:当进度小于最大值时,是否可
这是随意的原型(prototype)代码,因此我尝试了我认为应该有效的方法,如果没有,则在谷歌上搜索,然后在仔细阅读类似问题后在这里提问。 我的 Shell 中有以下标记看法:
要在执行查询时显示 ProgressBar,我使用以下代码: if not Query1.Prepared then Query1.Prepare; Query1.Open; ProgressBa
我有三个类,例如 View 、逻辑、 Controller 。 class View{ Progressbutton pb; void start animation(){
我正在用 C#/WPF(.Net 框架 4.0)编写一个应用程序。我遇到的一件事是如何在应用程序非常繁忙时更新控件(如果可能)。我想我只是在努力尝试我在网上找到的东西来让它工作(而且在极少数情况下它会
要在执行查询时显示 ProgressBar,我使用以下代码: if not Query1.Prepared then Query1.Prepare; Query1.Open; ProgressBa
已关闭。此问题不符合 Stack Overflow guidelines 。目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 已关闭 3 年前。 奥 git _a
我创建了一个 ping 程序来 ping 5 服务器。如何在进度运行时让进度条运行。当 ping 完成时,进度条将为 100% private void btnGetstatusActionPer
我想在流程完成后在 PrimeFaces 上隐藏一个进度条。我认为没有必要在不工作时显示进度条。 html代码:
我想添加JProgressBar,它将在下载文件的程序中填充。 第三个问题是如何使进度条在 setValue 中添加正确的金额(例如:当它下载最后一个文件时,JPB 将完成)。 请注意,要下载的文件数
给定一个变量 N,反射(reflect)秒数,我想要一个 jQueryUI Progressbar顺利地从空更新到反射(reflect)该时间段内的完成。 换句话说,我想要一个显示进度条的functi
我是一名优秀的程序员,十分优秀!