- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 Activity :
public class MainActivity extends FragmentActivity
{
private FragmentA a;
private FragmentB b;
private FragmentC c;
private HomeFragment mHomeFragment;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.home_activity_layout);
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.fragment_container, mHomeFragment) // replace flContainer
.addToBackStack(null)
.commit();
...
}
我使用一些惰性初始化程序,并将对象 a、b、c 和 mHomeFragment 保留在我的 Activity 对象中,
我在“b”内有一个按钮,可以调用 MainActivity 来调用“c”和“c”内的一个按钮,调用 MainActivity 来调用“b”
还有一些其他按钮来调用“a”,这并不重要
现在在我的 FragmentB 中我有一些自定义 View ,
public CustomView(Context cnx, SettingsViewElement e, FragmentA fragment)
{
super(cnx);
inflate(cnx, R.layout.my_layout,this);
parent = fragment; // I use it later in my onCheckedChangeListener to tell him the the switch has been checked
condition = parent.getCondition();
titleTv = this.findViewById(R.id.title_tv);
switch = this.findViewById(R.id.switch);
if(condition){
switch.setChecked(true);
titleTv.setTitle("i am depressed af :(");
}
我的问题是:
为什么即使我的 titleTv 正在更新标题,我的开关也不会被选中??
我做了一些测试,每次在 fragment 事务中调用 Replace() 时,都会调用 OnCreated()。
我的 fragment 重新实例化 View ,然后在膨胀布局后将它们添加到线性布局。
此外,如果我没有在 MainActivity 中保留 fragment 引用,然后每次都重新实例化它。这里: switch.setChecked 将起作用,但 backStack 将会变得巨大且愚蠢
示例:stack = 'b' -> 'c' -> 'b' -> 'c'
通常情况下,当用户点击两次返回按钮时,他会返回到 homeFragment,它不需要自己清空堆栈。
即使我重写 @onBackPressed() 并每次重新实例化 fragment ,希望 android sdk 能够释放空间。
每次我想在设计中添加新 fragment 时,我都必须手动执行此操作,这将是轮子的重新发明。
并且:它没有解释为什么 即使条件为真并且其他 View 正在更新(textView 正在更新),Switch.setChecked() 也不起作用这是文本)
Update : Apparently,
if the fragment is being re-used and the onCreate() is called for thesecond time, (the reference for the fragment is being kept somewhereand fragment is being attached for a second time) here the setCheckedwill not take an effect, only some other view updates
meanwhile, it will only work if it's being called for the first timethe fragment is being created,
Solution : updating the views in the OnResume() method
If someone has an explanation for this, please go ahead
最佳答案
更新:显然,
如果 fragment 被重新使用并且 onCreate() 被第二次调用,( fragment 的引用被保存在某处并且 fragment 被附加第二次)这里setChecked不会生效,只会更新一些其他 View
同时,只有在第一次创建 fragment 时调用它才会起作用,
解决方案:更新 OnResume() 方法中的 View
如果有人对此有解释,请继续
关于java - 仅 Switch.setChecked 在显示 fragment 时不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60567140/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!