Android 从片段内部刷新文本视图

Android 从片段内部刷新文本视图,android,refresh,fragment,Android,Refresh,Fragment,我是android新手,在开发应用程序时遇到了问题 我想在我的活动中创建一个倒计时计时器,但我需要在片段中完成它,所以我需要放置一个从0到10计数的for循环,并在该片段中刷新一个TextView 我需要片段独立于活动来完成它 谢谢你的合作 public class fragmento_3 extends Fragment { int count= 10; TextView texto_count; View v; @Override public View onCreateView(La

我是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();
        }
    }

谢谢,

这可能是因为您使用了错误的变量
texto\u conteo
。您已将
texto\u count
声明为实例变量,因此您可能希望使用该变量。

对于周期性任务,最好使用
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;
}


}
public类fragmento_3扩展了Fragment{
整数计数=10;
TextView texto_计数;
定时器t;
观点五;
TimerTask timer=新的TimerTask(){
@凌驾
公开募捐{
getActivity().runOnUiThread(新的Runnable()){
@凌驾
公开募捐{
计数--;
如果(计数>=0){
texto_count.setText(Integer.toString(count));
}
}
});

如果(count那么问题出在哪里?当我在CreateView中放入for循环时,它只显示最后一个数字0,textview必须显示每个数字sorry,我来自拉丁美洲,所以我用西班牙语编写变量代码,当我发布问题时,我更改了所有名称,但正如我所看到的,我忘记了一个,对不起,您是否尝试过使用
Thread.sleep
for的周期比100长?是的,但我得到了相同的结果,它只显示了最后一个数字,我也尝试将for循环放入片段的onResume方法中,但我使用长度为1000和长度为100ok的
倒计时器得到了相同的结果,但我应该将其放入何处?因为问题是我们在片段生命周期中它工作得很好,谢谢,但是我是android新手,请解释一下为什么它在返回语句之后更新片段的ui?我明白,一旦片段经过onCreateView,它不会更新ui,除非它暂停并重新绘制。
一旦片段经过onCreateView,它就不会更新ui除非暂停并重新绘制,否则不要更新ui。
我不这么认为。我们可以随时更新片段ui。
Timer
类的基本功能是创建一个独立于主线程的新后台线程/任务,该线程/任务不断更新/刷新片段中的textview。
onCreateView的官方文档
是:
当片段第一次绘制其用户界面时,系统调用它。
有关更多信息,您可以参考此,