Java Android:如何永久设置可见性
这不是“如何设置可见性”问题的重复 我有一个活动1和一个活动2,当我启动活动2时,我在监听器中设置了一个布局,从Gone变为Visible,它可以工作,我的问题是,当我返回到活动1并返回到活动2时,布局的可见性又变为Gone。如何使布局在离开时保持可见 Activity2.java:Java Android:如何永久设置可见性,java,android,xml,android-studio,mobile,Java,Android,Xml,Android Studio,Mobile,这不是“如何设置可见性”问题的重复 我有一个活动1和一个活动2,当我启动活动2时,我在监听器中设置了一个布局,从Gone变为Visible,它可以工作,我的问题是,当我返回到活动1并返回到活动2时,布局的可见性又变为Gone。如何使布局在离开时保持可见 Activity2.java: @Override public void onClick(View v) { if (FirstLayout.getVisibility() == View.INVISIBLE) {
@Override
public void onClick(View v) {
if (FirstLayout.getVisibility() == View.INVISIBLE) {
FirstLayout.setVisibility(View.VISIBLE);
}
}
SharedPreferences sharedPreferences;
Activity2.xml:
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="invisible"
android:id="@+id/oneLayout"
android:animateLayoutChanges="true"
android:orientation="vertical">
<!-- one Button -->
<!-- one TextView -->
</LinearLayout>
您可以通过以下方法保存上次状态
boolean mState = false;
final String STATE_VISIBILITY = "state-visibility";
// somewhere in the code assign a value to mState
// i.e. mState = false (if GONE default) and mState = true (if VISIBLE)
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
// Save the user's current game state
savedInstanceState.putBoolean(STATE_VISIBILITY, mState);
// Always call the superclass so it can save the view hierarchy state
super.onSaveInstanceState(savedInstanceState);
}
恢复
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
// Always call the superclass so it can restore the view hierarchy
super.onRestoreInstanceState(savedInstanceState);
// Restore state members from saved instance
mState = savedInstanceState.Boolean(STATE_VISIBILITY);
view.setVisibility(mState?View.VISIBLE:View.GONE);
}
有关的更多信息,您可以通过以下方法保存上次状态
boolean mState = false;
final String STATE_VISIBILITY = "state-visibility";
// somewhere in the code assign a value to mState
// i.e. mState = false (if GONE default) and mState = true (if VISIBLE)
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
// Save the user's current game state
savedInstanceState.putBoolean(STATE_VISIBILITY, mState);
// Always call the superclass so it can save the view hierarchy state
super.onSaveInstanceState(savedInstanceState);
}
恢复
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
// Always call the superclass so it can restore the view hierarchy
super.onRestoreInstanceState(savedInstanceState);
// Restore state members from saved instance
mState = savedInstanceState.Boolean(STATE_VISIBILITY);
view.setVisibility(mState?View.VISIBLE:View.GONE);
}
更多关于的信息,如上述评论所述,请访问Activity2.java:
@Override
public void onClick(View v) {
if (FirstLayout.getVisibility() == View.INVISIBLE) {
FirstLayout.setVisibility(View.VISIBLE);
}
}
SharedPreferences sharedPreferences;
在Activity2的onCreate方法中:
sharedPreferences=getPreferences(Context.MODE_PRIVATE);
FirstLayout.setVisibility(sharedPreferences.getBoolean("visibility",false));
然后:
@Override
public void onClick(View v) {
if (FirstLayout.getVisibility() == View.INVISIBLE) {
FirstLayout.setVisibility(View.VISIBLE);
SharedPreferences.Editor editor=sharedPreferences.edit();
editor.putBoolean("visibility",true).commit();
}
}
如上所述,在Activity2.java中:
@Override
public void onClick(View v) {
if (FirstLayout.getVisibility() == View.INVISIBLE) {
FirstLayout.setVisibility(View.VISIBLE);
}
}
SharedPreferences sharedPreferences;
在Activity2的onCreate方法中:
sharedPreferences=getPreferences(Context.MODE_PRIVATE);
FirstLayout.setVisibility(sharedPreferences.getBoolean("visibility",false));
然后:
@Override
public void onClick(View v) {
if (FirstLayout.getVisibility() == View.INVISIBLE) {
FirstLayout.setVisibility(View.VISIBLE);
SharedPreferences.Editor editor=sharedPreferences.edit();
editor.putBoolean("visibility",true).commit();
}
}
在SharedPrefso中保存视图的可见性状态我想这是一个重复。My Apologiesset android:launchMode=“SingleTop”位于包含要隐藏的布局的活动元素内(在清单文件内),然后查看要隐藏的内容happens@Sam在清单中添加了它,但什么都没有发生,尽管当我将其更改为“singleTask”时,它意外地工作了,但启动活动的时间更长,动画也不同,速度也较慢,当我将其更改为“singleInstance”时,同样的事情发生了。“singleTask”和“singleInstance”到底是什么意思?@Sam好的,我只是阅读了有关它的文档,如果我关闭应用程序,它不会保存它。看来sharedPrefs是正确的选择,谢谢你在sharedPrefs中保存你的可视状态。我想这是一个重复。My Apologiesset android:launchMode=“SingleTop”位于包含要隐藏的布局的活动元素内(在清单文件内),然后查看要隐藏的内容happens@Sam在清单中添加了它,但什么都没有发生,尽管当我将其更改为“singleTask”时,它意外地工作了,但启动活动的时间更长,动画也不同,速度也较慢,当我将其更改为“singleInstance”时,同样的事情发生了。“singleTask”和“singleInstance”到底是什么意思?@Sam好的,我只是阅读了有关它的文档,如果我关闭应用程序,它不会保存它。看来sharedPrefs是正确的选择,谢谢。我如何定义状态可见性和mState?既然可见性值为0、1和2,它不应该是savedInstanceState.putInt()吗?请原谅这个不恰当的问题,如果你想保持两个以上的状态,你可以选择使用putInt。我想你希望保持可见或消失。是的,我实际上不需要两个以上的状态,但我如何创建STATE_VISIBILITY和mState?这些值将在将来由用户更改,我认为使用共享首选项是更好的解决方案,不是吗?此方法仅在活动转换期间保存最后一个状态。如果您想在应用程序首次启动时保存状态,共享Prefs是正确的方法。然后使用bryan c的方法。我如何定义状态可见性和mState?既然可见性值为0、1和2,它不应该是savedInstanceState.putInt()吗?请原谅这个不恰当的问题,如果你想保持两个以上的状态,你可以选择使用putInt。我想你希望保持可见或消失。是的,我实际上不需要两个以上的状态,但我如何创建STATE_VISIBILITY和mState?这些值将在将来由用户更改,我认为使用共享首选项是更好的解决方案,不是吗?此方法仅在活动转换期间保存最后一个状态。如果您想在应用程序首次启动时保存状态,共享Prefs是正确的方法。然后用布莱恩c的方法。这就是我要找的。我可以使用相同的SharedReferences来存储其他版面的可见性,但我必须创建一个新的编辑器来编辑每个关键点,对吗?不,你可以使用相同的编辑器,但你必须在任何时候调用comit(),只要你想保存更改。我认为当我卸载应用程序并再次运行它时,它并没有发挥应有的作用,布局在不应显示时已可见。我没有输入布尔值,而是输入Int,因为卸载应用程序时可见性为0、1或2,所有共享引用和数据都将被删除。问题是android备份服务,我建议您在应用程序开发期间通过将其添加到清单文件中来禁用它:android:allowBackup=“false”最好使用与应用程序版本相关的具有唯一名称的SharedReference。这就是我要找的。我可以使用相同的SharedReferences来存储其他版面的可见性,但我必须创建一个新的编辑器来编辑每个关键点,对吗?不,你可以使用相同的编辑器,但你必须在任何时候调用comit(),只要你想保存更改。我认为当我卸载应用程序并再次运行它时,它并没有发挥应有的作用,布局在不应显示时已可见。我没有输入布尔值,而是输入Int,因为卸载应用程序时可见性为0、1或2,所有共享引用和数据都将被删除。问题是android备份服务,我建议您在应用程序开发期间通过将其添加到清单文件中来禁用它:android:allowBackup=“false”最好使用与应用程序版本相关的具有唯一名称的SharedReference