java - 无法从父活动获取值到子活动 Android Studio
问题描述
我有两个活动:MainActivity6(父)和 tool1mode1(子)
来自父活动:
if (tool == 1) {
switch (mode) {
case 1:
intentTool1mode1.putExtra("Type", typekey);
intentTool1mode1.putExtra("Key", Key);
intentTool1mode1.putExtra("Tool", "Tool 1");
intentTool1mode1.putExtra("Mode", "Home");
Toast.makeText(MainActivity6.this, "Type: " + typekey + "\n" + "Key: " + Key + "\n" + "Tool: " + "1" + "\n" + "Mode: " + "Home" + "\n", Toast.LENGTH_LONG).show();
if(key_60.isChecked())
{
String number = "480000";
long val = Long.parseLong(number);
intentTool1mode1.putExtra("Time",val);
startActivityForResult(intentTool1mode1, 1);
}
if(key_90.isChecked())
{
String number = "720000";
long val = Long.parseLong(number);
intentTool1mode1.putExtra("Time",val);
startActivityForResult(intentTool1mode1, 1);
}
break;
这是子活动的一部分:
private long START_TIME_IN_MILLIS;
private long mTimeLeftInMillis = START_TIME_IN_MILLIS;
private CountDownTimer mCountDownTimer;
...
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
Intent intent = getIntent();
START_TIME_IN_MILLIS = intent.getLongExtra("Time", 0);
newbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startTimer();
}
});
下面的代码代表了我用来在子 Activity 中启动和更新计数器的两个函数:
private void startTimer()
{
mCountDownTimer = new CountDownTimer(mTimeLeftInMillis, 1000) {
@Override
public void onTick(long millisUntilFinished) {
mTimeLeftInMillis = millisUntilFinished;
updateCountDownText();
progress++;
pb.setProgress((int)progress*100/(480000/1000));
}
@Override
public void onFinish()
{
progress++;
pb.setProgress(100);
//Vibration
if (Build.VERSION.SDK_INT >= 26)
{
((Vibrator) getSystemService(VIBRATOR_SERVICE)).vibrate(VibrationEffect.createOneShot(150, VibrationEffect.DEFAULT_AMPLITUDE));
Toast.makeText(com.example.ticwatch_1.tool1mode1.this,"Done",Toast.LENGTH_SHORT).show();
}
else
{
((Vibrator) getSystemService(VIBRATOR_SERVICE)).vibrate(VibrationEffect.createWaveform(new long[]{150}, new int[]{VibrationEffect.EFFECT_CLICK},-1));
}
}
}.start();
}
private void updateCountDownText()
{
//time in minutes and seconds
int minutes = (int)(mTimeLeftInMillis/1000)/60;
int seconds = (int)(mTimeLeftInMillis/1000)%60;
//formating the above to appear as String
String timeLeftFormatted = String.format("%02d:%02d",minutes,seconds);
timer.setText(timeLeftFormatted);
}
我想要的是从父活动中获取值并用我获取的值更新 START_TIME_IN_MILLIS 的值。所以我希望计时器运行 8 分钟,我将获取 480000。相反,当我启动它时计数器为 0,因为它已经完成并且不是从 8 分钟或任何其他值开始。我不知道该怎么办,我已经筋疲力尽了。
解决方案
推荐阅读
- hl7 - HL7 - XCN 数据类型中的 FN 数据类型?
- mercurial - 用于记录变更集的 Mercurial 报告?
- couchdb - Couchdb 以集群模式监视更改提要,返回相同自值的随机更改
- python - 不准确的 scipy 最小化有界
- javascript - 从表的字段中返回一个值
- html - 单击按钮到新页面时自动对焦(单独的html)
- c# - 在itexsharp中将单元格中心的文本与图像旁边的文本对齐
- python - 未找到模块错误:没有名为“src”的模块
- spring - Spring boot @Inject 代理解析为 null
- php - PHP以交替顺序合并数组的最佳解决方案