处理程序postDelayed无法更新UI

时间:2014-01-29 14:24:45

标签: android android-fragments android-handler

大家好我想在短暂延迟后尝试更新UI,为此我正在使用处理程序的postdelayed方法。以下代码最初将我的textview文本设置为“Processing”,并且处理程序的runnable中包含的代码会被执行,但不会更新UI?请注意,这是在片段中完成的

TextView progressText=(TextView)parent.findViewById(R.id.inProgressText);
progressText.setText("Processing");

getActivity().getMainLooper()).postDelayed(new Runnable() {
    @Override
    public void run() {
        TextView progressText=(TextView)parent.findViewById(R.id.inProgressText);
        progressText.setText("Request completed");              
    }
}, 3000);

感谢您的帮助

3 个答案:

答案 0 :(得分:2)

更改

getActivity().getMainLooper()).postDelayed(new Runnable()

为:

final Handler handler = new Handler();

然后

handler.postDelayed(new Runnable() {
    @Override
    public void run() {
        final TextView progressText=(TextView)findViewById(R.id.inProgressText);
        progressText.setText("Request completed");              
    }
}, 3000);

答案 1 :(得分:1)

使用此代码

public class MainActivity extends Activity {
TextView progressText = null;

public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.activity_main, container, false);

    progressText = (TextView) rootView.findViewById(R.id.inProgressText);
    progressText.setText("Processing");
    progressText.postDelayed(new Runnable() {
        @Override
        public void run() {
            progressText.setText("Request completed");
        }
    }, 3000);
       return rootView;
}
}

答案 2 :(得分:0)

请尝试这种方式:我检查了Fragment,它运行正常。

View parent= inflater.inflate(R.layout.your_fragement, container, false);
TextView progressText=(TextView)parent.findViewById(R.id.inProgressText);
progressText.setText("Processing");

            progressText.postDelayed(new Runnable() {
                @Override
                public void run() {
                    progressText.setText("Request completed");
                }
            }, 3000);