По вашему вопросу я замечаю, что вам все равно нужно прочитать о фрагментах. вы не можете перейти к активности из фрагмента, потому что фрагменты
- это раздел активности, который имеет свой собственный жизненный цикл, получает свои собственные события ввода, вы можете добавлять или удалять их во время работы (вроде как «вспомогательная активность», которую можно повторно использовать в разных действиях).
Хотя вы можете заменить фрагмент и использовать другое в той же деятельности. вы можете сделать это так:
Сначала в главном XML использовать макет, что ваш собирается надуть:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:id="@+id/frgContainer"
android:layout_margin="20dp"
android:background="#00e6ff">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn"
android:text="btn"
/>
</LinearLayout>
Создать 2 новые виды деятельности, которые будут наши фрагменты с 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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.hackeru.mydynamicfragment.Login">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="User Name"
android:id="@+id/txtLoginUser"
android:layout_marginLeft="20sp"
android:layout_marginRight="20sp"
android:layout_marginTop="80dp"
/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Password"
android:id="@+id/txtLoginPass"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btnLogin"
android:text="Login"
/>
</LinearLayout>
Override метод OnCreate на фрагменте
public class Login extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.activity_login,container,false);
}
4.use fragmentTransaction в методе OnClick в основной, чтобы заменить или добавить текущую раскладку с фрагментом вы создали:
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentManager fragmentManager =getFragmentManager();
// we must handle the callback fragment process
FragmentTransaction fragmentTransaction =
fragmentManager.beginTransaction();
Login loginFragment = new Login();
fragmentTransaction.add(R.id.frgContainer,loginFragment);
// fragmentTransaction.replace if there is another fragment you
// wish to replace
fragmentTransaction.commit();
}
читать следующее:
Не делайте фрагмент транзакций внутри фрагмента, вы должны написать один интерфейс и реализовать его в своей деятельности и сами сделать транзакцию фрагмента. –