我是android的新手,我在尝试开发应用时遇到了问题。
我想在我的活动中制作一个倒数计时器,但我需要在一个片段中进行,所以我需要设置一个从0到10计数的for循环并刷新该片段内的TextView。
我需要片段独立于活动。
感谢您的合作
public class fragmento_3 extends Fragment {
int count= 10;
TextView texto_count;
View v;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
v = inflater.inflate(R.layout.fragmento_3, container, false);
texto_count = (TextView)v.findViewById(R.id.texto_count);
return v;
}
}
我想把它放在
里面 for(int x = count; x >= 0 ; x--){
texto_count.setText(String.valueOf(x));
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
感谢,
答案 0 :(得分:2)
最好将Timer
用于定期任务,而不是使用Thread.sleep
。
试试此代码
public class fragmento_3 extends Fragment{
int count= 10;
TextView texto_count;
Timer t;
View v;
TimerTask timer= new TimerTask(){
@Override
public void run() {
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
count--;
if(count >= 0) {
texto_count.setText(Integer.toString(count));
}
}
});
if (count <= 0) {
t.cancel();
}
}
};
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
v = inflater.inflate(R.layout.fragmento_3, container, false);
texto_count = (TextView)v.findViewById(R.id.texto_count);
t = new Timer();
t.scheduleAtFixedRate(timer , 0 , 2000);
return v;
}
}
答案 1 :(得分:0)
可能是因为您使用了错误的变量texto_conteo
。您已将texto_count
声明为实例变量,因此您可能希望使用它。