我遇到一个问题,即在onResumeFragments
方法中设置可见性似乎不起作用。这是有问题的活动:
public class MainActivity extends FragmentActivity {
private ViewGroup activityBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
activityBar = (ViewGroup)findViewById(R.id.activity_bar);
}
@Override
protected void onResumeFragments() {
if (someCondition) {
activityBar.setVisibility(View.GONE);
}
}
}
活动栏如下所示:
<LinearLayout
android:id="@+id/activity_bar"
android:layout_height="@dimen/activity_bar_height"
android:layout_width="match_parent"
android:orientation="horizontal"
android:background="#AD000000"
android:layout_alignParentTop="true"
android:gravity="center_vertical"
android:visibility="visible"
>
我已经提取了很多其他细节,但基本上,如果满足给定条件,我想在我的onResumeFragments
中隐藏此活动栏。我发现setVisibility
似乎没有做任何事情。调用该行后,我可以在activityBar上调用getVisiblity
并将其设置为GONE,但它仍会显示在UI中。我也可以将它设置为Y并看到它向下移动到屏幕上。我还仔细检查以确保在主线程中发生这种情况。我有点不知道为什么这不起作用以及最好的解决方法是什么。
答案 0 :(得分:0)
在处理onStart()和onResume()时,事情会变得有点棘手。例如,您不应该在FragmentActivity的onResume()方法中提交事务,因为在某些情况下可以在活动状态恢复之前调用该方法(有关更多信息,请参阅documentation)。如果您的应用程序需要在除onCreate()之外的Activity生命周期方法中提交事务,请在FragmentActivity#onResumeFragments()或Activity#onPostResume()中执行此操作。因此,只需尝试修改代码,看看它是否适用于onPostResume()。
答案 1 :(得分:0)
事实证明,在我尝试设置其可见性之前,activity_bar已经过动画处理。此票证中包含的信息与我遇到的问题相同,并且具有相同的解决方案。