我在布局xml中将可见性设置为GONE
,并且可以在片段中以编程方式将其设置为VISIBLE
。使用“返回”按钮返回此片段时,即使在离开之前将其设置为GONE
,视图的可见性也始终设置为VISIBLE
。
如何保持片段的状态(回到片段时只调用onResume())?
由于
XML
...
<LinearLayout
android:id="@+id/sub_bio_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:visibility="gone" />
....
活动
public class MyFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
...
LinearLayout sub_bio_container = (LinearLayout) findViewById(R.id.sub_bio_container);
if(<some condition>){
sub_bio_container.setVisibility(VIEW.VISIBLE);
}
....
}
答案 0 :(得分:1)
好主意是:将xml中的视图设置为VISIBLE
,当你在app中使用它时(通过inflate或findviewbyid())将其设置为GONE
。像这样,它将在简历中显示,您可以通过代码控制它的可见性。
第二个想法是:如果隐藏或不隐藏视图,请继续跟踪,并在onResume()中设置该视图的可见性。
答案 1 :(得分:1)
使用 onSaveInstanceState(Bundle)来保存您的应用程序状态(例如您的视图的可见性状态)和 onRestoreInstanceState(Bundle savedInstanceState)以检索上一个状态。
答案 2 :(得分:0)
看一下这个文档: http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle
根据您是否完成活动,可能还有onRestart。
你能告诉我们XML /代码吗?
答案 3 :(得分:-2)
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
view.setVisiblity(View.VISIBLE)
onResume();
return true;
}
return super.onKeyDown(keyCode, event);
}