簡體   English   中英

從SecondActivity接收MainActivity中的字符串值,然后將其向下計數

[英]Receiving a string value in in MainActivity from SecondActivity, and then counting it down

在我的程序中,您在secondActivity中設置倒數計時器的字符串值。 然后將該值發送到MainActivities textView,然后應該在獲取值后立即開始倒計時。 現在我已經設置了所以你可以設置值,並且值被正確獲取,但是我不知道該怎么做是在收到它時開始倒數這個值。 我已經制作了一個CounterClass。 這是我的MainActivity Code ...

Bundle extras = getIntent().getExtras();

    String intentString;
    if(extras != null) {
        intentString = extras.getString("TimeValue");
        timer = new CounterClass(60000, 1000);
        timer.start();
        timeSent();

    } else {
        intentString = "Default String";
    }
    textTime= (TextView) findViewById(R.id.timeText);
    textTime.setText(intentString);

你需要啟動你的計時器。 始終閱讀文檔

timer = new CounterClass(millisInFuture, countdownInterval);
timer.start();

編輯

millisInFuture ---從調用start()到倒計時完成並調用onFinish()的未來毫秒數。

countDownInterval ---接收onTick(long)回調的路徑。

編輯18-12-2015

將您的intentString轉換為millisInFuture並將其發送到CounterClass。 然后在onTick()方法onTick()其格式化為HH:MM。

String time = "16:54";
String split[] = time.split(":");
long futureInMillis = Integer.parseInt(split[0]) * 60 * 60 * 1000 + Integer.parseInt(split[1]) * 60 * 1000;

而不是這個

TextView timeText = (TextView)findViewById(R.id.timeText);
timeText.setText(intentString);

你需要這個

textTime= (TextView)findViewById(R.id.timeText);
textTime.setText(intentString);
timer = new CounterClass(10000, 1000);
timer.start();

您可能會看到timeText已更改為textTime,它是一個類成員變量,您的CounterClass使用它。

讓我們說你真的想要實現自己的類。
我認為最好和最干凈的方法是通過界面。

首先創建一個接口類。
AddTimes.java

public interface AddTimes  {
      void writeTime(String time);
}

現在,在您的班級中實現您的界面。

public class MainActivity extends AppCompatActivity implements AddTimes{

使用您的類TextView變量“textTime”

   timeText = (TextView)findViewById(R.id.timeText); //remove declaration TextView and use timeText instead of textTime . 

開始上課

new CounterClass(5000L,500L, this).start();

在CounterClass中,添加構造函數。

  AddTimes addTimes;
public CounterClass(long millisInFuture, long countDownInterval, AddTimes addTimes) {
    super(millisInFuture, countDownInterval);
    this.addTimes = addTimes;
}

替換textTime.setText(hms); to addTimes.writeTime(hms);

最后。 在你的主要活動。 實現AddTimes方法。

public void writeTime(String time) {
    timeText.setText("Time - " + time);
}

將代碼原樣復制到MainActivity.java文件中。
希望這可行。

public class MainActivity extends AppCompatActivity {

TextView textTime;
CountDownTimer timer;
int intValue = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Bundle extras = getIntent().getExtras();
if(extras != null) {
    String intentString = extras.getString("TimeValue"); //if this is a plain number like 20, 45, 209, 8
    intValue = Integer.valueOf(intentString);
}
textTime= (TextView)findViewById(R.id.timeText);
timer = new CountDownTimer(intValue * 1000, 1000) {
public void onTick(long millisUntilFinished) {
    intValue--;
    textTime.setText("Count Down: " + intValue);
}
@Override
public void onFinish() {}
}
}
timer.start();
}

您只需使用倒計時器:

  new CountDownTimer(30000, 1000) {

        public void onTick(long millisUntilFinished) {
            textField.setText("seconds remaining: " + millisUntilFinished / 1000);
           //here you can have your logic to set text to edittext
        }

        public void onFinish() {
            textField.setText("done!");
        }

    }.start();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM