如何从android中的活动调用片段?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/22978627/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-20 06:38:32  来源:igfitidea点击:

How to call fragment from an activity in android?

androidandroid-fragments

提问by Amrutha

I am working on android fragments. In my app I am getting an issue with activityand fragment. i.e I created a buttonin fragment1and called an activity1in that buttonclick. Again in activity1I created another buttonand called activity2. Now from activity2I called activity1and from activity1I am trying to call fragment1. But it is showing error at id(can anyone tell me which id we need to give). I researched in google on how to call fragmentfrom activitybut I didnt find any solution for this. Please help me out with this issue. Thanks in advance.

我正在工作android fragments。在我的应用程序中,我遇到了activity和问题fragment。即我创建了一个buttoninfragment1activity1在那个button点击中调用了一个。再次在activity1我创建另一个button并调用activity2. 现在从activity2我打电话activity1activity1我试图打电话fragment1。但它在 id 处显示错误(谁能告诉我我们需要提供哪个 id)。我在谷歌研究了如何调用fragmentactivity但我没有找到任何解决方案。请帮我解决这个问题。提前致谢。

My code:

我的代码:

Activity1.class

Activity1.class

public void back(View v) {

 MyFragment1 fragmentS1 = new MyFragment1();
 getFragmentManager().beginTransaction().replace(android.R.id.frame_container, fragmentS1).commit();

}

Logcat Error:

04-10 10:55:28.876: E/AndroidRuntime(22103): FATAL EXCEPTION: main
04-10 10:55:28.876: E/AndroidRuntime(22103): java.lang.IllegalArgumentException: No view found for id 0x7f0a0004 (com.vizteck.navigationdrawer:id/frame_container) for fragment Fragment1{429cba90 #0 id=0x7f0a0004}
04-10 10:55:28.876: E/AndroidRuntime(22103):    at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:895)
04-10 10:55:28.876: E/AndroidRuntime(22103):    at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1075)
04-10 10:55:28.876: E/AndroidRuntime(22103):    at android.app.BackStackRecord.run(BackStackRecord.java:682)
04-10 10:55:28.876: E/AndroidRuntime(22103):    at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1455)
04-10 10:55:28.876: E/AndroidRuntime(22103):    at android.app.FragmentManagerImpl.run(FragmentManager.java:441)
04-10 10:55:28.876: E/AndroidRuntime(22103):    at android.os.Handler.handleCallback(Handler.java:725)
04-10 10:55:28.876: E/AndroidRuntime(22103):    at android.os.Handler.dispatchMessage(Handler.java:92)
04-10 10:55:28.876: E/AndroidRuntime(22103):    at android.os.Looper.loop(Looper.java:137)
04-10 10:55:28.876: E/AndroidRuntime(22103):    at android.app.ActivityThread.main(ActivityThread.java:5283)
04-10 10:55:28.876: E/AndroidRuntime(22103):    at java.lang.reflect.Method.invokeNative(Native Method)
04-10 10:55:28.876: E/AndroidRuntime(22103):    at java.lang.reflect.Method.invoke(Method.java:511)
04-10 10:55:28.876: E/AndroidRuntime(22103):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
04-10 10:55:28.876: E/AndroidRuntime(22103):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
04-10 10:55:28.876: E/AndroidRuntime(22103):    at dalvik.system.NativeStart.main(Native Method)

回答by Hariharan

Try this..

尝试这个..

Remove android from this android.R.id.frame_container

从此删除 android android.R.id.frame_container

if you are using activity1extendsActivityuse getFragmentManager()or if you are using activity1extendsFragmentActivityuse getSupportFragmentManager().

如果您正在使用activity1extendsActivityusegetFragmentManager()或者如果您正在使用activity1extendsFragmentActivityuse getSupportFragmentManager()

like below

像下面

MyFragment1 fragmentS1 = new MyFragment1();
getSupportFragmentManager().beginTransaction().replace(R.id.frame_container, fragmentS1).commit();

回答by Android

Fragment frag;
FragmentManager fm1 = MainActivity.this
    .getSupportFragmentManager();
FragmentTransaction ft1 = fm1.beginTransaction();
frag = new Animal_Activity();
ft1.replace(R.id.activity_main_content_fragment, frag);
ft1.commit();

回答by Maksudul Hasan Raju

Write it in your activity like below

将其写在您的活动中,如下所示

Fragment fragment = new YourFragment();
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.replace(R.id.output1, fragment);
transaction.addToBackStack(null);
transaction.commit();

回答by Namrata

Do This:-

做这个:-

FragmentManager fragmentManager = getFragmentManager();
            FragmentTransaction fragmentTransaction = fragmentManager
                    .beginTransaction();
            MyFragment1 fragmentS1 = new MyFragment1();
            fragmentTransaction.replace(R.id.realtabcontent, mBarcodeScreen);
            fragmentTransaction.commit();

Good Luck !!

祝你好运 !!

回答by Ramesh R

Simply you can call like this:

只需您可以这样调用:

Fragment fragment = new FragmentName(); 
FragmentManager fragmentManager = ((Activity) context).getFragmentManager();
fragmentManager.beginTransaction().replace(R.id.fragment_main, fragment).commit();