Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何获取计时器经过的时间并在另一个活动中继续运行_Java_Android_Chronometer - Fatal编程技术网

Java 如何获取计时器经过的时间并在另一个活动中继续运行

Java 如何获取计时器经过的时间并在另一个活动中继续运行,java,android,chronometer,Java,Android,Chronometer,我的main活动中有一个计时器,我想保存经过的时间并将其传递给SecondActivity,显示经过的时间并使用共享首选项在第二个活动中继续运行,但我没有这样做 我尝试使用textView来检查值是否从主活动传递到第二个活动,它确实传递了,但当涉及到计时器时,它不工作,第二个活动中的计时器保持0:00 代码如下:MainActivity.java public class MainActivity extends AppCompatActivity implements Navi

我的
main活动中有一个计时器
,我想保存经过的时间并将其传递给
SecondActivity
,显示经过的时间并使用共享首选项在第二个活动中继续运行,但我没有这样做

我尝试使用textView来检查值是否从主活动传递到第二个活动,它确实传递了,但当涉及到计时器时,它不工作,第二个活动中的计时器保持0:00

代码如下:MainActivity.java

public class MainActivity extends AppCompatActivity
        implements NavigationView.OnNavigationItemSelectedListener {
private Chronometer chronometer;
@Override
      protected void onStart(){
        super.onStart();
          final long startTime = (SystemClock.elapsedRealtime() - chronometer.getBase());
          chronometer.setBase(startTime);
          final SharedPreferences pref = getSharedPreferences("chronometer",Context.MODE_PRIVATE);
          final SharedPreferences.Editor editor = pref.edit();

        mChildReference1.addValueEventListener(new ValueEventListener() {
              @Override
              public void onDataChange (DataSnapshot dataSnapshot){
                    String status = dataSnapshot.getValue(String.class);

                   if (status.equals ("occupied")) {

                        chronometer.start();
                        editor.putLong("time", startTime);
                       editor.commit();

                   }
                   else
                       mValueView1.setBackgroundColor(Color.parseColor("#66d983"));

              }
@Override
    protected void onStart() {
        super.onStart();

        final SharedPreferences pref = getSharedPreferences("chronometer",Context.MODE_PRIVATE);

        mChildReference1.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                String status = dataSnapshot.getValue(String.class);

                if(status.equals("occupied")) {

                    savedTime = pref.getLong("time",01);
                    timer.setText(String.valueOf(savedTime));
                    chronometer.setBase(savedTime);
                    chronometer.getBase();

                }
                if(!status.equals("occupied")){
                        chronometer.setBase(SystemClock.elapsedRealtime());
                        pauseOffset = 0;
                        chronometer.stop();
                        parkingCharge=0; 

                    }
                }


            @Override
            public void onCancelled(DatabaseError databaseError) {

            }

        });
SecondActivity.java

public class MainActivity extends AppCompatActivity
        implements NavigationView.OnNavigationItemSelectedListener {
private Chronometer chronometer;
@Override
      protected void onStart(){
        super.onStart();
          final long startTime = (SystemClock.elapsedRealtime() - chronometer.getBase());
          chronometer.setBase(startTime);
          final SharedPreferences pref = getSharedPreferences("chronometer",Context.MODE_PRIVATE);
          final SharedPreferences.Editor editor = pref.edit();

        mChildReference1.addValueEventListener(new ValueEventListener() {
              @Override
              public void onDataChange (DataSnapshot dataSnapshot){
                    String status = dataSnapshot.getValue(String.class);

                   if (status.equals ("occupied")) {

                        chronometer.start();
                        editor.putLong("time", startTime);
                       editor.commit();

                   }
                   else
                       mValueView1.setBackgroundColor(Color.parseColor("#66d983"));

              }
@Override
    protected void onStart() {
        super.onStart();

        final SharedPreferences pref = getSharedPreferences("chronometer",Context.MODE_PRIVATE);

        mChildReference1.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                String status = dataSnapshot.getValue(String.class);

                if(status.equals("occupied")) {

                    savedTime = pref.getLong("time",01);
                    timer.setText(String.valueOf(savedTime));
                    chronometer.setBase(savedTime);
                    chronometer.getBase();

                }
                if(!status.equals("occupied")){
                        chronometer.setBase(SystemClock.elapsedRealtime());
                        pauseOffset = 0;
                        chronometer.stop();
                        parkingCharge=0; 

                    }
                }


            @Override
            public void onCancelled(DatabaseError databaseError) {

            }

        });

这回答了你的问题吗?“[…]说到计时器,它不工作。”它到底是怎么不工作的?代码的实际问题是什么?没有,因为现在问题是第二个活动中的计时器没有显示主活动中经过的开始时间,它仍然是0:00。我尝试使用textview检查值是否传递给第二个活动,它在textview中显示了一些数字,因此我假设它以毫秒为单位。现在的问题是,我该怎么做,才能让计时器从主要活动中获取开始时间,并在第二个活动中继续运行。这是否回答了你的问题?“[…]说到计时器,它不工作。”它到底是怎么不工作的?代码的实际问题是什么?没有,因为现在问题是第二个活动中的计时器没有显示主活动中经过的开始时间,它仍然是0:00。我尝试使用textview检查值是否传递给第二个活动,它在textview中显示了一些数字,因此我假设它以毫秒为单位。现在的问题是,我该怎么做,才能让计时器从主活动中获取开始时间,并在第二个活动中继续运行它。