我有一个以编程方式创建片段的活动。该片段内部有另一个片段。
活动包含片段A。片段A包含片段B。
如果(savedInstanceState==null){
}
但对我不起作用!
活动:
public class Activity extends AppCompatActivity {
ScrollView sv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity);
LinearLayout ll = (LinearLayout) findViewById(R.id.ll);
sv = findViewById(R.id.sv);
LinearLayout ll_fragment = new LinearLayout(this);
ll_fragment.setId(100);
ll_fragment.setOrientation(LinearLayout.VERTICAL);
LinearLayout.LayoutParams LLParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
ll_fragment.setLayoutParams(LLParams);
ll.addView(ll_fragment);
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
ArrayList<Integer> AL_Int = new ArrayList<Integer>();
AL_Int.add(sv.getId());
fragment = FragmentA.newInstance(AL_Int);
fragmentTransaction.add(ll_fragment.getId(), fragment);
fragmentTransaction.commit();
}
片段:
public class FragmentA extends Fragment {
public static FragmentA newInstance(ArrayList<Integer> AL_Int_sv_ID) {
FragmentA f = new FragmentA();
Bundle b = new Bundle();
if(AL_Int_sv_ID.get(0) != null){
b.putInt("int_sv_ID", AL_Int_sv_ID.get(0));
b.putBoolean("bool_sv", true);
}else{
b.putInt("int_sv_ID", -1);
b.putBoolean("bool_sv", false);
}
f.setArguments(b);
return f;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle args = getArguments();
if (args != null) {
int int_ScrollView_ID = args.getInt("int_sv_ID");
boolean bool_ScrollView = args.getBoolean("bool_sv");
bool_sv = bool_ScrollView;
int_sv_ID = int_ScrollView_ID;
if(bool_sv){
sv = getActivity().findViewById(int_ScrollView_ID);
sv = FA.findViewById(int_ScrollView_ID);
}
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
LinearLayout ll = new LinearLayout(getActivity());
ll.setOrientation(LinearLayout.VERTICAL);
LLParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT);
ll.setLayoutParams(LLParams);
ll.setId(20);
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
FragmentB fragmentB = new FragmentB();
transaction.add(20, fragmentB);
transaction.commit();
return ll;
}
您需要重试if(savedInstanceState==null)方法。这是正确的处理方法,您可能做错了什么,只需在if中包装这3行:
fragment = AutoCompleteTextView_Fragment.newInstance(AL_Int);
fragmentTransaction.add(ll_fragment.getId(), fragment);
fragmentTransaction.commit();
我有两个选项卡的活动,它实现了两个相似的片段,每个片段都由GridView组成,通过AsyncTask加载项目,它工作正常,直到屏幕方向改变。。。在这之后,只能单击操作栏并在选项卡之间切换,但GridView完全停止与用户交互:滚动、单击或其他任何操作。只实现了标准的onSaveInstanceState(Bundle outState)和onRestoreInstanceState(Bundle
我有一个活动与行动栏标签。每个选项卡都包含一个片段。现在,当我旋转我的设备时,我的相应片段中的bundle是空的。当我使用Android3.2后的设备时,这是小心的,但当设备是Android3.0时,这是发生的。我在这个问题上工作后感到头痛。我就这样勾选了各种链接,但无济于事。虽然我已经给出了足够的细节,但仍然会提供一些代码段作为在各种情况下用户要求的代码段。 在我的片段类中,我存储了这个值
本文向大家介绍Android改变手机屏幕朝向的方法,包括了Android改变手机屏幕朝向的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android改变手机屏幕朝向的方法。分享给大家供大家参考。具体如下: 模拟当点击按钮时,使手机朝向发生改变。 main.xml布局文件: 清单文件: OrientationActivity类: 运行结果: 希望本文所述对大家的Android程序设计
所以我正在用Visual Studio编写一个Android应用程序。我想要一个既有纵向又有横向的活动。当我打开我的设备时,我的活动中的数据消失了。所以我在网上查了一下,找到了一行放在清单中的数据,这很有效!Android:config changes = " orientation | keyboard hidden | screen size "除了我所有的视图都是无序的、错位的。我使用了两种
我正在向运行的activity添加一个带有WindowManager的相机覆盖。当我启动相机并调用WindowManager时,它将我的屏幕从纵向变为横向,即使我为WindowManager.LayoutParams分配了适当的纵向标记。还没能通过谷歌找到任何解决方案。 下面是我在服务中的方法中运行的WindowManager代码: 布局r.layout.camera只是我将相机添加到的Frame
null 我想保留的最后一个查看页面索引,当活动因任何原因重新创建时,例如方向改变。 位于附加到活动的(名为)中。我使用的是compat库,因此该片段是的子类。 我认为可以通过重写方法并在中添加适当的逻辑来完成,如文档中所述: 为了正确地处理重启,重要的是您的活动通过正常的活动生命周期恢复其以前的状态,在正常的活动生命周期中,Android在破坏您的活动之前调用onSaveInstanceStat