当前位置: 首页 > 知识库问答 >
问题:

如何从活动开始片段

卫琛
2023-03-14

我已经想从我的Main活动启动我的RecipientFra法规,并从我的Main活动将数据传递到Fra法规。这是我实现的代码。但是碎片没有开始。

Bundle bundle = new Bundle();
bundle.putString(ParseConstants.KEY_FILE_TYPE, fileType);
RecipientsFragment keyfile = new RecipientsFragment();
keyfile.setArguments(bundle);
Fragment newFragment = new RecipientsFragment();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.commit();

我还想知道如何传递intent.set数据,并在碎片中获取数据。目前我有以下代码:

受体片段

mMediaUri = getActivity().getIntent().getData();

主要活动

Intent recipientsIntent = new Intent(this, RecipientsFragment.class);
        recipientsIntent.setData(mMediaUri);

共有3个答案

岑驰
2023-03-14

首先,您启动活动和服务的目的是,您启动片段事务的片段。其次,你的交易没有做任何事情。将其更改为:

FragmentTransaction transaction = getFragmentManager();
    transaction.beginTransaction()
        .replace(R.layout.container, newFragment) //<---replace a view in your layout (id: container) with the newFragment 
        .commit();
陶乐生
2023-03-14

简单的方式

>

  • 创建一个新的java

    public class ActivityName extends FragmentActivity {
    @Override
     public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
        if (savedInstanceState == null){
        getSupportFragmentManager().beginTransaction()
                .add(android.R.id.content, new Fragment_name_which_you_wantto_open()).commit();}
     }
    }
    

    在你想调用片段的活动中

     Intent i = new Intent(Currentactivityname.this,ActivityName.class);
     startActivity(i);
    

    另一种方法

    >

  • 在你想要打开片段的活动中放置框架布局

      <FrameLayout
            android:id="@+id/frameLayout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
        </FrameLayout>
    

    将此代码粘贴到要打开片段的位置

        Fragment mFragment = null;
            mFragment = new Name_of_fragment_which_you_want_to_open();
            FragmentManager fragmentManager = getSupportFragmentManager();
            fragmentManager.beginTransaction()
                    .replace(R.id.frameLayout, mFragment).commit();
    

  • 南门鸿雪
    2023-03-14

    您可以在活动中添加或替换片段。在活动布局xml文件中创建FrameLayout

    然后在活动中执行此操作以添加片段:

    FragmentManager manager = getFragmentManager();
    FragmentTransaction transaction = manager.beginTransaction();
    transaction.add(R.id.container,YOUR_FRAGMENT_NAME,YOUR_FRAGMENT_STRING_TAG);
    transaction.addToBackStack(null);
    transaction.commit();
    

    并替换片段这样做:

    FragmentManager manager = getFragmentManager();
    FragmentTransaction transaction = manager.beginTransaction();
    transaction.replace(R.id.container,YOUR_FRAGMENT_NAME,YOUR_FRAGMENT_STRING_TAG);
    transaction.addToBackStack(null);
    transaction.commit();
    

    请参阅有关向活动添加片段的Android文档或以下相关问题:

    add()、replace()和addToBackStack()之间的差异

    碎片添加()和替换()方法的基本区别

    add()之间的差异

     类似资料:
    • 我有两个碎片,两个碎片上都有一个按钮。当我按下按钮时,我想开始一项新的活动。但我不能让它工作。 我得到的错误:这里的错误:类型不匹配:无法从mFragmentFavorite转换为片段 我做错了什么? 我的碎片寻呼机适配器 收藏夹 如果FavoriteActivity扩展了片段,那么错误就消失了,但是我在findViewById(R.id.mainFavorite)处得到了一个错误 错误为 fin

    • 问题内容: 我有一堂课,称为extends 。 现在,在我的父级活动中,我想“运行”此片段。 这是我的: 如何运行/启动片段?我希望我的方法可以触发。 问题答案: 有很多文档!您需要的一切已经在这里。 当然,您需要在活动布局中使用该容器。

    • //使用startActivity(intent)也不起作用//无论我做什么,应用程序都会崩溃

    • 我有两个模块。应用程序和模块测试。模块应用程序包含带按钮的主活动。模块测试包含主要活动二。我想通过点击按钮从模块应用程序运行Test/MainActivity。但Android仍然无法从模块测试中看到主要活动。见下文。 模块应用清单: 模块测试清单: 在模块app MainActivity中为单击按钮和运行第二个活动编码: 在控制台我得到一个错误: 带系统。错误:java。lang.ClassNo

    • 我在活动C中有四个片段,它们的行为就像标签一样。我必须从一个片段转到一个新的活动X。现在我想回到从活动X到片段的片段。 这是我的主要活动 '公共类MainInterface扩展了ActionBarActivity{ } ' 下面是活动视图中的公共类讨论。onclick侦听器{ ###