0

Я начинаю заниматься разработкой Android. Я создаю небольшое приложение, в котором я называю два фрагмента из одного действия. Деятельность -> фрагмент 1-> фрагмент 2.Деятельность по фрагменту 1, фрагмент 1 до фрагмента 2 фрагмента 2 к действию

Деятельность по фрагменту 1, фрагмент 1 для фрагмента 2. Я хочу знать, как напрямую я вызываю фрагмент 2 в действие непосредственно.

Я даю кнопку во Фрагменте 2, при нажатии этой кнопки я хочу войти в Activity.

+0

Не делайте фрагмент транзакций внутри фрагмента, вы должны написать один интерфейс и реализовать его в своей деятельности и сами сделать транзакцию фрагмента. –

ответ

0

Деятельность уже существует. Ваша деятельность - это тот, где размещаются фрагменты, т. Е. Предполагается, что все являются фрагментами полного экрана, когда вы вызываете фрагмент1, ваша деятельность удаляет текущий фрагмент (если он есть) и заменяет его фрагментом1, когда вы вызываете фрагмент2, фрагмент1 заменяется фрагментом2 и скоро.

Если вы хотите увидеть только макет деятельности (которая в большинстве случаев будет просто белый экран), вы должны удалить все фрагменты, чтобы сделать это, добавьте в OnClick вашего баттона:

getActivity().getFragmentManager().popBackStack(1, FragmentManager.POP_BACK_STACK_INCLUSIVE); 
0

По вашему вопросу я замечаю, что вам все равно нужно прочитать о фрагментах. вы не можете перейти к активности из фрагмента, потому что фрагменты
- это раздел активности, который имеет свой собственный жизненный цикл, получает свои собственные события ввода, вы можете добавлять или удалять их во время работы (вроде как «вспомогательная активность», которую можно повторно использовать в разных действиях).

Хотя вы можете заменить фрагмент и использовать другое в той же деятельности. вы можете сделать это так:

  1. Сначала в главном 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. Создать 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> 
    
  3. 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(); 
} 

читать следующее:

https://developer.android.com/guide/components/fragments.html

+0

Я знаю это ....... –

 Смежные вопросы

  • Нет связанных вопросов^_^