我想从布局1更改为布局2,旋转后仍保留内容。有人可以告诉我该怎么做吗?
来自:https://www.dropbox.com/sc/y2nyrzard859hf2/AAD0qVjWoLzKcnQV9a4FTQi_a
到此:https://www.dropbox.com/sc/29hhlbfm31cfs0j/AADCWsFNzD7DKHx4q9i2FlbDa
这是我的代码,但似乎没有用
if(config.orientation == Configuration.ORIENTATION_LANDSCAPE) {
setContentView(R.layout.activity_create_bill3);
}
else {
setContentView(R.layout.activity_create_bill2);
}
if(fragmentManager.findFragmentByTag("fragment_product")==null) {
fragment_product = new Fragment_Product();
fragmentTransaction.replace(R.id.fragment_product,fragment_product,"fragment_product");
}
else
fragmentTransaction.replace(R.id.fragment_product,fragmentManager.findFragmentByTag("fragment_product"));
if(fragmentManager.findFragmentByTag("fragment_product_chosen")==null) {
fragment_product_chosen = new Fragment_Product_Chosen();
fragmentTransaction.replace(R.id.fragment_product_chosen,fragment_product_chosen,"fragment_product_chosen");
}
else
fragmentTransaction.replace(R.id.fragment_product_chosen,fragmentManager.findFragmentByTag("fragment_product_chosen"),"fragment_product_chosen");
fragmentTransaction.commit();
我使用2个不同的布局,它有相同的视图,但一个在水平,另一个在垂直,旋转时,fragment_product仍保留内容,但fragment_product_chosen消失。
答案 0 :(得分:1)
你应该有3个clases:
click here to see your layout folder
您的MainActivity类中的代码:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
FragmentMain类中的代码:
public class FragmentMain extends Fragment{
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_main, container, false);
}
}
FragmentSide类中的代码:
public class FragmentSide extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_side, container, false);
}
}
然后在您的activity_main.xml中:
<fragment
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/fragment_main"
android:layout_marginTop="230dp"
class="au.com.example.multi_fragments.FragmentMain" />
<fragment
android:layout_width="match_parent"
android:layout_height="220dp"
android:id="@+id/fragment_side"
class="au.com.example.multi_fragments.FragmentSide" />
/>
在您的activity_main.xml(land)中使用相同的方式:
<fragment
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="250dp"
android:id="@+id/fragment_main"
class="au.com.example.multi_fragments.FragmentMain" />
<fragment
android:layout_width="240dp"
android:layout_height="match_parent"
android:id="@+id/fragment_side"
class="au.com.example.multi_fragments.FragmentSide" />
你的fragment_main.xml中的:
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="View 2"
android:textSize="20sp"
android:padding="20dp"
android:textStyle="bold"
android:id="@+id/textViewMain" />
在你的fragment_side.xml中:
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="View 1"
android:textSize="20sp"
android:padding="20dp"
android:textStyle="bold"
android:id="@+id/textViewMain" />
我希望这个解决方案是你想要的。祝你好运:)
答案 1 :(得分:0)
要为横向和纵向模式设置不同的布局,请在res
文件夹下创建两个文件夹:layout
和layout-land
。所有XML文件在两个文件夹中都应具有相同的名称。有关详细信息,请阅读Designing for Multiple Screens。尽管本文针对不同的屏幕尺寸,但这些技术也适用于不同的设备方向。
至于保存和恢复数据,这与在没有方向更改的情况下销毁活动相同。