0

我正在开发安卓应用程序。在我的项目中,我有 3 页。

  • 第一页由 1 个按钮组成。
  • 第二页由定时器代码组成。
  • 第三页再次包含一个按钮。

现在我的要求是当我点击第一页按钮时,第三页应该打开,第二页中的计时器应该暂停。同样,当我单击第三页按钮时,第二页计时器应该重新开始它停止的时间并打开第一页。

我正在努力完成这项任务。指导我完成它,建议应该做些什么来做到这一点。

Page1.java

rowTextView.setOnClickListener(new OnClickListener() {
  public void onClick(View v) {

    Intent myIntent = new Intent(v.getContext(),Page3.class);
    startActivity(myIntent);
    finish();                                       
  }
});

Page2.java

public class TimeractivitybestActivity extends Activity {
    EditText e1;
    MyCount counter;
    Long s1;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        e1 = (EditText) findViewById(R.id.editText1);
        counter = new MyCount(15000, 1000);
        counter.start();
     }

    public void method(View v) {

        switch (v.getId()) {

        case R.id.button1:
            counter.cancel();
            break;
        case R.id.button2:
            counter = new MyCount(s1, 1000);
            counter.start();
        }
    }

    public class MyCount extends CountDownTimer {
        public MyCount(long millisInFuture, long countDownInterval) {
            super(millisInFuture, countDownInterval);
        }
        @Override
        public void onFinish() {
            e1.setText("DONE");
        }
        @Override
        public void onTick(long millisUntilFinished) {
            s1 = millisUntilFinished;
            e1.setText("left:" + millisUntilFinished / 1000);
        }
    }
}


Page3.java

public void gobacktopage1(View v)
    {
        Intent myIntent = new Intent(v.getContext(),Page1.class);
        startActivity(myIntent);
        finish();
    }
4

3 回答 3

1

您始终可以存储s1 的 timeLeft并像这样再次使用它,也请阅读评论

1)在调用定时器时,检查你是否有任何存储的时间

    Page1.java       
    rowTextView.setOnClickListener(new OnClickListener() { 
      public void onClick(View v) { 
        SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
        long time = sp.getLong("time", 0); // get saved time of times
        Intent myIntent = new Intent(v.getContext(),Page3.class); 
        myIntent.putExtra("time", time); // send it to page2
        startActivity(myIntent); 
        finish();                                        
      } 
    }); 

2)如果时间不为0,则使用时间开始时间。

    Page2.java 

    public class TimeractivitybestActivity extends Activity {
        EditText e1;
        MyCount counter;
        Long s1;

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            long time = this.getIntent().getLongExtra("time", 0); // get
                                                                    // saved
                                                                    // time
            time = (time != 0) ? time : 1500;
            e1 = (EditText) findViewById(R.id.editText1);
            counter = new MyCount(time, 1000); // start with saved time
            counter.start();
        }

        public void method(View v) {

            switch (v.getId()) {

            case R.id.button1:
                counter.cancel();
                break;
            case R.id.button2:
                counter = new MyCount(s1, 1000);
                counter.start();
            }
        }

        public class MyCount extends CountDownTimer {
            public MyCount(long millisInFuture, long countDownInterval) {
                super(millisInFuture, countDownInterval);
            }

            @Override
            public void onFinish() {
                e1.setText("DONE");
            }

            @Override
            public void onTick(long millisUntilFinished) {
                s1 = millisUntilFinished;
                e1.setText("left:" + millisUntilFinished / 1000);
            }
        }

        public void onPause() {
            SharedPreferences sp = PreferenceManager
                    .getDefaultSharedPreferences(this);
            Editor et = sp.edit();
            et.putLong("time", s1); // save time SharedPreference in onPause
            et.commit();
        }

    }

3) 我想第 3 页没有变化。

    Page3.java 

    public void gobacktopage1(View v) 
        { 
            Intent myIntent = new Intent(v.getContext(),Page1.class); 
            startActivity(myIntent); 
            finish(); 
        } 
于 2012-06-30T06:24:16.857 回答
0

这就是它的工作原理......

MyCount counter;
Long s1;

     counter= new MyCount(300000,1000);
    counter.start();

public void asdf(View v){  <---- method for onclick of buttons pause and resuming timer

    switch(v.getId()){



    case R.id.button1:<-- for pause

        counter.cancel();
        break;
    case R.id.button2:<--- for resume
        counter= new MyCount(s1,1000);
         counter.start();
    }
}
public class MyCount extends CountDownTimer{
    public MyCount(long millisInFuture, long countDownInterval) {
    super(millisInFuture, countDownInterval);
    }
    @Override
    public void onFinish() {
    mediaplayer.stop();
   mediaplayer.release();
    }
    @Override
    public void onTick(long millisUntilFinished) {
        s1=millisUntilFinished;

    }
    }

case R.id.button1:<-- 暂停

        counter.cancel();

这是用于暂停计时器并重新开始的那个......

在你的情况下

public void gobacktopage1(View v) { Intent myIntent = new Intent(v.getContext(),Page1.class); 开始活动(我的意图);结束(); }

在那个 add counter.cancel() 中写一个方法;在那个方法中并调用那个方法......

于 2012-06-30T06:08:55.590 回答
0
public class TimerActivity extends Activity{

EditText e1;
MyCount counter;
Long s1;
/** Called when the activity is first created. */ 
@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    e1=(EditText)findViewById(R.id.editText1);
    counter= new MyCount(5000,1000);
    counter.start();
}
public void asdf(View v)
{
    switch(v.getId())
    {
        case R.id.button1:         counter.cancel();
        break;
        case R.id.button2:         counter= new MyCount(s1,1000);
        counter.start();
    }
}
public class MyCount extends CountDownTimer
{
    public MyCount(long millisInFuture, long countDownInterval)
    {
        super(millisInFuture, countDownInterval);
    }
    @Override     public void onFinish()
    {
        e1.setText("DONE");
    }
    @Override     public void onTick(long millisUntilFinished)
    {
        s1=millisUntilFinished;
        e1.setText("left:"+millisUntilFinished/1000);
    }
}

}

于 2012-06-30T06:13:55.770 回答