【问题标题】:how do i open up android.support.v4.app.Fragment from an activity我如何从活动中打开 android.support.v4.app.Fragment
【发布时间】:2015-03-26 12:45:29
【问题描述】:

我之前问过这个问题,但你们大多数的答案都是针对另一个片段的。 基本上我如何从Activity 打开android.support.v4.app.Fragment

【问题讨论】:

  • 在活动布局中创建一个容器id。并通过简单实例化片段并在片段事务中替换其实例来打开片段。两种片段的过程都是一样的,只是导入不同
  • 请提供示例代码? @绿巨人

标签: java android android-intent android-fragments android-activity


【解决方案1】:

这里是如何..

getSupportFragmentManager().beginTransaction()
                .add(R.id.container, new SupportFragment())
                .commit();

【讨论】:

    【解决方案2】:

    您无法从android.app.Activity 打开android.support.v4.app.Fragment。 你应该改用android.support.v4.app.FragmentActivity

    【讨论】:

      【解决方案3】:
      FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
      // Replace the container with the new fragment
      ft.replace(R.id.your_placeholder, new FooFragment());
      // or ft.add(R.id.your_placeholder, new FooFragment());
      // Execute the changes specified
      ft.commit();
      

      【讨论】:

        【解决方案4】:

        这是你的活动布局

        <?xml version="1.0" encoding="utf-8"?>
        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical" >
        
            <FrameLayout
                android:id="@+id/your_placeholder"
                android:layout_width="match_parent"
                android:layout_height="match_parent" >
            </FrameLayout>
        
        </LinearLayout>
        

        然后通过扩展 Fragment 类创建一个片段。

        import android.support.v4.app.Fragment;
        import android.support.v4.app.FragmentTransaction;
        
        import android.view.LayoutInflater;
        import android.view.View;
        import android.view.View.OnClickListener;
        import android.view.ViewGroup;
        import android.widget.AdapterView;
        import android.widget.AdapterView.OnItemClickListener;
        import android.widget.Button;
        import android.widget.GridView;
        import android.widget.ImageView;
        
        import com.example.goodfeetapp.MainActivity;
        import com.example.goodfeetapp.R;
        import com.example.goodfeetapp.adapter.BringAdapter;
        
        public class Bring extends Fragment {
            public static String TAG = "Bring";
        
            @Override
            public View onCreateView(LayoutInflater inflater, ViewGroup container,
                    Bundle savedInstanceState) {
        
                View view = inflater.inflate(R.layout.gridview, container, false);
        
        
                return view;
            }
        

        }

        现在使用以下代码替换活动类中的这个片段:

                                FragmentTransaction ft = getFragmentManager()
                                        .beginTransaction();
                                Bring bring = new Bring();
        
                                ft.replace(R.id.your_placeholder, bring,
                                        Bring.TAG);
                                ft.addToBackStack(null);
        
                                ft.commit();
        

        【讨论】:

        • 我不明白活动布局部分。你的意思是gridview.xml吗?我在哪里插入 id your_placeholder?
        • android:id="@+id/your_placeholder" 是容器 ID。所有片段都将放入该容器中。每当您要替换片段时,都必须使用此 ID。考虑到这个 id 是我在活动中预订的空间,我正在使用该空间来替换我的片段。我可以替换任意数量的片段。
        • 它说 = return() 不能应用于:
        • gridview.xml 是片段的布局。每当您创建片段时,您都应该创建它的布局。与活动布局相同。
        • 做一件事从 FragmentActivity 而不是 Activity 扩展你的活动,当你使用它时,使用 FragmentTransaction ft = getsupportFragmentManager() .beginTransaction();然后我想它会正常工作
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-05-22
        • 2013-06-15
        • 1970-01-01
        • 2012-02-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多