对片段1,片段1到片段2片段2的活性为活性

时间:2016-05-17 10:12:18

标签: android android-fragments fragment android-fragmentactivity

我是Android开发的初学者。我正在创建一个小应用程序,我在其中调用来自单个活动的两个片段。 活动 - >片段1->片段2.

对片段1,片段1到片段2的活动。  我想知道我是如何直接将片段2直接调用到Activity。

我在片段2中给出按钮,点击我想要进入活动的那个按钮。

2 个答案:

答案 0 :(得分:0)

活动已经存在。您的活动是托管片段的活动,即假设所有片段都是全屏碎片,当您调用fragment1时,您的活动将删除当前片段(如果有)并将其替换为fragment1,当您调用fragment2时,fragment1将替换为fragment2和等等。

如果您只想查看活动的布局(在大多数情况下只是一个白色的屏幕),您必须删除所有碎片,为此,将其添加到您的按钮onClick:

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

答案 1 :(得分: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方法

    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. 4.在main中的onClick方法中使用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