我尝试在片段子类中使用onSaveInstanceState(Bundle outState)方法保存数据。
解释:我创建了一个类FragmentA,它扩展了这个类中的Fragment。我有一个变量名count,当我单击按钮时,count的值发生了变化(最初count=0)。我想保存count的值,即使方向发生了变化(纵向到横向,反之亦然)。我的MainActivity类动态加载片段。
我的代码:
此类扩展了片段:-
public class FragmentA extends Fragment implements View.OnClickListener {
Button change_After_Click;
int count=0;
Communicator com;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(savedInstanceState!=null){
count=savedInstanceState.getInt("counter",0);
}
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_a_layout, container, false);
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
System.out.println("onActivityCreated");
com= (Communicator) getActivity();
change_After_Click=(Button)getActivity().findViewById(R.id.textChangeClick);
change_After_Click.setOnClickListener(this);
}
@Override
public void onClick(View view) {
count=count+1;
com.proviedLinkBothFragment("button click "+ count);
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("counter",count);
}
}
MainActivity类在此动态加载片段:-
public class MainActivity extends AppCompatActivity implements Communicator {
Button btn;
FragmentManager fragmentManager;
FragmentTransaction fragmentTransaction;
FragmentB obj;
FragmentA objA;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
System.out.println("ge low");
fragmentManager=getSupportFragmentManager();
fragmentTransaction=fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.relativeLayout,new FragmentA());
fragmentTransaction.commit();
}
@Override
public void proviedLinkBothFragment(String s) {
FragmentB fb= (FragmentB) fragmentManager.findFragmentById(R.id.relativeLayout);
fb.changeText(s);
}
}
在activity的方法onCreate
中,您应该在替换片段之前检查片段是否已经存在。当你添加一个片段时,你应该为这个片段使用一个标记(“MY_标记”),然后你可以通过一个标记找到一个片段。您不需要手动重新创建片段(我想在旋转期间)。系统为你做的。
fragmentManager=getSupportFragmentManager();
if (fragmentManager.findFragmentByTag("MY_TAG") == null) {
fragmentTransaction=fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.relativeLayout,new FragmentA(), "MY_TAG");
fragmentTransaction.commit();
}
我正在进行一项活动,其中有TabLayout和两个表示选项卡内容的片段。我在活动的OnCreate方法中手动管理打开选项卡的当前状态: 这只是一个简单的例子。我真正的代码是用C语言编写的,并且有一些其他逻辑来存储和管理活动重启之间的状态。 配置更改时的问题(例如开关方向): 打开的碎片被摧毁 活动被破坏 活动重启 在onCreate方法中,当调用super.onCreate(savedInstan
当使用底部导航视图在片段之间切换时,每次按下按钮时都会重新创建片段。 这是我的代码:
我正在开发一个android应用程序,它使用导航抽屉在两个片段之间切换。然而,每次我切换时,片段都会被完全重新创建。 这是我主要活动的代码。 我设置了一些调试日志记录,每次调用selectItem时,都会销毁一个片段,而创建另一个片段。 有什么方法可以防止碎片被重新创建,而只是重复使用它们吗?
因为我们知道progressdialog需要一个参数上下文或获取片段的活动,但在解除对话框后,它转到了另一个片段,我将其设置为mainactivity默认片段为homepage 这是我课堂上使用的方法
我正在通过片段“A”调用从服务器获取数据。当我用“B”替换“A”时,在从“B”返回到“A”之后,每次都会调用片段“A”,因此每次都会生成HTTPGET。如何避免这种情况,并在活动中重用类似REORDER_to_FRONT的片段? 我正在使用此代码替换为新片段 当我反压时,
问题内容: 我的Spring-Boot-Mvc-Web应用程序在文件中具有以下数据库配置: 这是我所做的唯一配置。我在任何地方都没有进行任何其他配置。尽管如此,Spring和子系统会在每次Web应用程序运行时自动重新创建数据库。即在系统运行时重新创建数据库,而在应用程序结束后它包含数据。 我不了解此默认值,并期望它适合测试。 但是,当我开始运行测试时,我发现数据库仅重建一次。由于没有按预定义的顺序