Android 从活动中调用片段

Android 从活动中调用片段,android,Android,我有一个导航抽屉活动,它包含两个片段。我的问题是我想调用按钮中的导航抽屉活动类单击哪个应该有片段B,默认情况下导航抽屉有片段A 我在这里发布我的代码: back.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { startActivity(new Intent(getApplicationContext(),

我有一个
导航抽屉
活动,它包含两个
片段
。我的问题是我想调用
按钮中的
导航抽屉
活动类
单击哪个应该有片段B,默认情况下导航抽屉有片段A

我在这里发布我的代码:

 back.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            startActivity(new Intent(getApplicationContext(),Navigation.class));
            FragmentTransaction tx = getSupportFragmentManager().beginTransaction();
            tx.replace(R.id.content_frame, new FragmentB());
            tx.commit();
            finish();
        }
    });
其中content_frame是我要替换片段B视图的区域。

尝试下面的代码

back.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {

        Fragment fragment = new FragmentB();
        FragmentManager fm =getActivity().getSupportFragmentManager();
        FragmentTransaction ft = fm.beginTransaction();
        ft.replace(R.id.content_frame, fragment);
        ft.commit();
    }
});

就这样做一个
FragmentB
的例子

FragmentB fragment - new FragmentB();
然后像这样传过去

tx.replace(R.id.content_frame, fragment);
tx.commit();
现在,您可以使用instance
fragment
从活动中访问fragment的所有变量和方法。像这样
fragment.methodName()

尝试这种方法

在您的按钮中,单击发送额外数据以检查您需要的片段

back.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
Intent intent = new Intent(getApplicationContext(), Navigation.class);
    intent.putExtra("SELECTEDVALUE", 2);//1 for fragament A use 2 for fragment B
    startActivity(intent);

        }
    });
现在,在导航活动的oncreate()方法中

Bundle extras = savedInstanceState != null ? savedInstanceState : getIntent().getExtras();
        int selectedValue = extras.getInt("SELECTEDVALUE");

switch (selectedValue) {
                case 1:
                    goToFragment(new A(), false);

                    break;
                case 2:
                    goToFragment(new B(), false);

                    break;
最后一个挑战是

private void goToFragment(Fragment fragment, boolean addToBackStack) {
        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

        if (addToBackStack) {
            transaction.addToBackStack(null);
        }

        transaction.replace(R.id.container, fragment).commit();
    }
请尝试以下代码:

back.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            getActivity().getSupportFragmentManager().beginTransaction()
                            .add(R.id.content_frame, new FragmentB(), "fragmentB").addToBackStack(null).commit();
        }
    });

希望它能解决您的问题。

可能与“我无法访问内容”框架重复,该框架是导航抽屉活动的视图。。因此,如果在此(当前)活动中没有名为content_frame的视图,我无法将FragmentB替换为content_frame。我将尝试此操作