0

我是Android開發的初學者。我正在創建一個小應用程序,我從單個活動中調用兩個片段。 活動 - >片段1->片段2.活動到片段1,片段1到片段2片段2到活動

活動到片段1,片段1到片段2. 我想知道如何直接將片段2直接調用到活動。

我在Fragment 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. 覆蓋的onCreate的片段方法在主OnClick方法

    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.使用fragmentTransaction更換或片段添加當前佈局創建:

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

我知道這個....... –