【发布时间】:2013-11-13 18:55:31
【问题描述】:
大家好,我正在尝试在片段转换时设置进度条,我的第一个片段 onClick 调用第二个片段,这将在显示之前做一些繁重的工作。 这项繁重的工作不使用 asynctask,因为它是从缓存中的 html 解析。
使这项工作的最佳方法是什么?!
我的第一个片段:
private void onClick(final MoodleCourseContent[] courseContent,
View layout, final int contentIdx) {
layout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String courseId = Integer.toString(v.getId());
String courseName = courseContent[contentIdx].getName();
String topicId = (String) v.getTag();
Bundle bundle = new Bundle();
bundle.putString("courseId", courseId);
bundle.putString("courseName", courseName);
bundle.putString("topicId", topicId);
FragmentManager fragmentManager = getActivity()
.getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager
.beginTransaction();
FragTopics insideTopicsFrag = new FragTopics();
insideTopicsFrag.setArguments(bundle);
fragmentTransaction.addToBackStack(null);
fragmentTransaction
.replace(R.id.mainFragment, insideTopicsFrag);
fragmentTransaction.commit();
}
});
}....
我的第二个片段:
public class FragTopics extends Fragment {
Object course;
// ManSession Manager Class
ManSession session;
String courseId;
Long topicId;
String courseName;
@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2)
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onViewCreated(view, savedInstanceState);
}
public FragTopics() {
}
@Override
public void onAttach(Activity activity) {
// TODO Auto-generated method stub
super.onAttach(activity);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
session = new ManSession(getActivity().getApplicationContext());
courseId = getArguments().getString("courseId");
topicId = Long.parseLong(getArguments().getString("topicId"));
courseName = getArguments().getString("courseName");
MoodleCourseContent[] courseTopics = new ManContents(getActivity()
.getApplicationContext()).getContent(courseId);
MoodleCourseContent singleTopic = new ManContents(getActivity()
.getApplicationContext()).getTopic(topicId, courseTopics);
return createTopics(singleTopic, courseName, courseId, topicId);
}......
【问题讨论】:
-
如果你有很多繁重的计算,最好的方法可能是在异步任务中完成它,或者在另一个线程中。否则在计算完成之前您将无法渲染片段,然后您将无法显示进度条。
-
是的,我假设这是唯一的方法,我正在避免这样做,因为我必须改变很多事情,但如果没有其他方法,我将不得不这样做
标签: android android-fragments android-progressbar