首页 > 解决方案 > 无法从父活动获取值到子活动 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 分钟或任何其他值开始。我不知道该怎么办,我已经筋疲力尽了。

标签: javaandroidandroid-studiowear-os

解决方案


推荐阅读