大家好我想在短暂延迟后尝试更新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);
感谢您的帮助
答案 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);