1

カウントダウンタイマーを使用してカウントダウンしています これが私のコードです:

public class countdownnow extends Activity{

    TextView tv;
    private CDwnTimer countDownTimer;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState); 

        setContentView(R.layout.countdown_disp);
        tv = (TextView)findViewById(R.id.textView1);
    countDownTimer = new MalibuCountDownTimer(30000, 1050);
        countDownTimer.start();
}


// CountDownTimer class
    public class CDwnTimer extends CountDownTimer {
        public CDwnTimer(long startTime, long interval) {
            super(startTime, interval);
        }

        @Override
        public void onFinish() {
            tv.setText("00");             
        }

        @Override
        public void onTick(long millisUntilFinished) {

            int convert = (int)  millisUntilFinished/1000;
            String testString = String.format("%02d",convert); 

    CharSequence cs = new String(testString);                   
    tv.setText(cs);                 
        }
    }
}

最初はこれで問題なく動作しますが、このアクティビティを離れてから別のアクティビティに移動して戻ってくると、テキストビューはもうカウントダウンしませんか? TextView tv は引き続き回線を通過しますが、更新されません。アクティビティは解放され、Textview の同じ ID を初期化しますか? どんなヒントも素晴らしいでしょう。ありがとう。

4

1 に答える 1

0

活動を辞めたきっかけは?

私はあなたのプログラムをシミュレートし、MainActivity を OtherActivity に残して戻ると、textView はカウントダウンを続けます。コードは次のとおりです。

public class MainActivity extends Activity {

private CDwnTimer countDownTimer;
private Button btn;
private TextView tv;

@Override
public void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    tv = (TextView)findViewById(R.id.tv);
    btn = (Button) findViewById(R.id.btnEnter);

    btn.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            // call sendMessage method
            Intent startActivityIntent =new Intent(MainActivity.this, OtherActivity.class);
            MainActivity.this.startActivity(startActivityIntent);
        }
    });

    countDownTimer = new CDwnTimer(30000, 1050);
    countDownTimer.start();
}



// CountDownTimer class
    public class CDwnTimer extends CountDownTimer {
        public CDwnTimer(long startTime, long interval) {
            super(startTime, interval);
        }

        @Override
        public void onFinish() {
            tv.setText("00");             
        }

        @Override
        public void onTick(long millisUntilFinished) {
            int convert = (int)  millisUntilFinished/1000;
            String testString = String.format("%02d",convert); 
            CharSequence cs = new String(testString);  
            tv.setText(cs);
        }
    }
}

MainActivity レイアウトの main.xml ファイル:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <TextView
        android:id="@+id/tv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"       
        android:text="TextView" 
        android:layout_weight="6"/>
    <Button
        android:id="@+id/btnEnter"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="282dp"
        android:layout_marginLeft="21dp"
        android:text="Button" 
        android:layout_weight="2"/>
</LinearLayout>
于 2013-01-28T10:51:41.230 に答える