所以我正在尝试从我的主要活动中加载我的登录片段。我认为在使用片段transcation replace()方法时我没有替换整个布局的问题。
这是我的活动:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
}
@Override
protected void onStart() {
super.onStart();
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
LoginFragment lf = new LoginFragment();
ft.replace(R.id.mapView, lf);
ft.addToBackStack("map to login");
ft.commit();
}
activity_maps.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
tools:showIn="@layout/activity_maps">
<fragment
android:id="@+id/mapView"
android:name="com.google.android.gms.maps.MapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:layout="@layout/activity_maps" />
<Button
android:id="@+id/btn
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
login_fragment.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:facebook="http://schemas.android.com/apk/res-auto"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context=".LoginActivity"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@color/white"
android:inputType="textPersonName"
android:text="@string/Username"
android:ems="10"
android:id="@+id/username"
android:layout_gravity="center_horizontal"
android:gravity="center"
android:layout_marginBottom="10dp" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@color/white"
android:inputType="textPersonName"
android:text="@string/Password"
android:ems="10"
android:id="@+id/password"
android:layout_gravity="center_horizontal"
android:gravity="center"
android:layout_marginBottom="10dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="@string/ForgotPassword"
android:id="@+id/forgotPassword"
android:layout_gravity="center_horizontal"
android:textColor="#197cff" />
<Button
android:id="@+id/GoogleButton"
android:layout_width="215dp"
android:layout_height="wrap_content" />
</LinearLayout>
有关如何重构我的xml文件的任何建议?
谢谢你的时间!
答案 0 :(得分:0)
有关如何重构我的xml文件的任何建议吗?
您的问题与xml布局无关。首先将MapFragment嵌入到活动布局中,然后在活动开始时将其替换为另一个片段(onStart())并没有任何意义。其次,嵌入式片段(意味着在xml中使用片段标签声明的片段)不能用于片段事务,它们应该是静态的。因此,从xml布局中删除MapFragment,并执行一个简单的事务,将LoginFragment添加到活动布局的空 ViewGroup中。