【发布时间】:2016-07-22 23:36:15
【问题描述】:
我查看了其他问题、博客和文档,但似乎无法找到满足我需求的正确答案。 我有两个活动,A 和 B。当我(从 A)开始活动 B 时,我希望它立即打开,然后在显示进度条的同时加载所有内容,而不是仅在加载内容时打开活动,使其仿佛凝固了两秒。 Youtube 应用或 Play 商店就是一个例子。
这就是我得到的:
Button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent goB = new intent(ActivityA.this, ActivityB.class);
startActivity(goB);
}
});
这是我正在加载的活动:
public class ActivityB extends AppCompatActivity implements OnDateSelectedListener, OnMonthChangedListener {
private static final DateFormat FORMATTER = SimpleDateFormat.getDateInstance();
@Bind(R.id.calendarView) MaterialCalendarView widget;
@Bind(R.id.textView) TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_c_calendar);
ButterKnife.bind(this);
widget.setOnDateChangedListener(this);
widget.setOnMonthChangedListener(this);
textView.setText(getSelectedDatesString());
}
@Override
public void onDateSelected(@NonNull MaterialCalendarView widget, @Nullable CalendarDay date, boolean selected) {
textView.setText(getSelectedDatesString());
}
private String getSelectedDatesString() {
CalendarDay date = widget.getSelectedDate();
if (date == null) {
return "No Selection";
}
return FORMATTER.format(date.getDate());
}
@Override
public void onMonthChanged(MaterialCalendarView widget, CalendarDay date) {
}
}
我不是专家,欢迎详细解释。
注意:我在活动中加载的是这个日历:https://github.com/prolificinteractive/material-calendarview
问题:如何在后台加载setContentView()?
更新:我听从了 Hitesh Sahu 的建议,现在我只有一个带有一个容器的活动,每个片段都会被替换,我假设在后台加载 xml 内容的方式是片段和活动相同,但如果有任何区别,请务必提及。
【问题讨论】:
-
"当我(从 A)开始活动 B 时,我希望它立即开始,然后在显示进度条的同时加载所有内容,而不是在单击按钮后延迟让它看起来像活动愣了一秒。”
-
当你开始一个活动时,它会默认立即开始
-
这不是默认情况下发生的情况,我的第二个活动在其中实现了一个沉重的库,当我单击按钮启动该活动时,它大约需要一秒钟才能打开。我希望它立即打开,然后加载所有内容,而不是仅在加载内容时打开它
-
如果您正在执行后台任务,则在您的 B 活动中使用 AsyncTask 类
-
你能帮我做吗?
标签: java android android-activity