如何从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
How to call fragment from an activity in android?
提问by Amrutha
I am working on android fragments
. In my app I am getting an issue with activity
and fragment
. i.e I created a button
in fragment1
and called an activity1
in that button
click. Again in activity1
I created another button
and called activity2
.
Now from activity2
I called activity1
and from activity1
I 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 fragment
from activity
but I didnt find any solution for this. Please help me out with this issue. Thanks in advance.
我正在工作android fragments
。在我的应用程序中,我遇到了activity
和问题fragment
。即我创建了一个button
infragment1
并activity1
在那个button
点击中调用了一个。再次在activity1
我创建另一个button
并调用activity2
. 现在从activity2
我打电话activity1
和activity1
我试图打电话fragment1
。但它在 id 处显示错误(谁能告诉我我们需要提供哪个 id)。我在谷歌研究了如何调用fragment
,activity
但我没有找到任何解决方案。请帮我解决这个问题。提前致谢。
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 activity1
extendsActivity
use getFragmentManager()
or if you are using activity1
extendsFragmentActivity
use getSupportFragmentManager()
.
如果您正在使用activity1
extendsActivity
usegetFragmentManager()
或者如果您正在使用activity1
extendsFragmentActivity
use 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();