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中显示了一些数字,因此我假设它以毫秒为单位。现在的问题是,我该怎么做,才能让计时器从主活动中获取开始时间,并在第二个活动中继续运行它。