0

我想在屏幕上顯示一個計時器,並在該屏幕上顯示一個TextView和一個RecyclerView。
RecyclerView包含一些Spinners。
當執行onTick()方法時,紡紗器自動關閉。微調器在CountDownTimer中設置一些文本時關閉

請爲此問題提供任何解決方案。

我CountDownTimer準則

public class CountDownTimerClass extends CountDownTimer { 

    public CountDownTimerClass(long millisInFuture, long countDownInterval) { 

     super(millisInFuture, countDownInterval); 

    } 

    @Override 
    public void onTick(long millisUntilFinished) { 
     String time = String.format(Locale.US, "%02d:%02d:%02d", 
       TimeUnit.MILLISECONDS.toHours(millisUntilFinished), 
       TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished) - 
         TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millisUntilFinished)), 
       TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) - 
         TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished))); 
     mTvTimer.setText(time); 

    } 

    @Override 
    public void onFinish() { 


    } 
} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_member_enter_details); 

    mRecyclerView = (RecyclerView) findViewById(R.id.recycleView); 
    mTvTimer = (TextView) findViewById(R.id.tv_timer); 
    mTvBlockNo = (TextView) findViewById(R.id.tv_block_no); 
    mRlHeader = findViewById(R.id.rlHeader); 

    //hit for web service. In the response i am starting timer 
    getData(Event.GET_EXPIRATION_TIME); 
} 

回答

0

肯定它的關閉,因爲你調用另一個觀點setText。這可能會引發焦點更改,導致Spinner關閉。

您可以通過(最好是通過XML)設置focusable爲false TextView的避免這種情況,或呼籲的TextView clearFocus()setText()

+0

因此,我們可以在Textview中設置文本而不會獲得焦點嗎? –

+0

好問題。這可能是可能的。另一個選項可能是setText,然後以編程方式重新打開微調器。您也可以在TextView上將'focusable'設置爲false。 – LukeWaggoner

+0

我認爲這不會工作,因爲它是CountDownTimer –

0

您應該更新您的標籤或TextView的文本在UI線程,所以你的代碼應該看起來像

public void onTick(long millisUntilFinished) { 
    String time = String.format(Locale.US, "%02d:%02d:%02d", 
      TimeUnit.MILLISECONDS.toHours(millisUntilFinished), 
      TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished) - 
        TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millisUntilFinished)), 
      TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) - 
        TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished))); 
    runOnUiThread(new Runnable() { 
     @Override 
     public void run() { 
      mTvTimer.setText(time); 
     } 
    }); 

} 
+0

如果他從UI線程更新它,它會引發異常。 – LukeWaggoner

+0

嘗試沒有工作 –

+0

@FaisalKhan你可以上傳一段代碼,你膨脹mTvTimer嗎? –