如何从Android中的活动呼吁片段? [英] How to call fragment from an activity in android?

查看:155
本文介绍了如何从Android中的活动呼吁片段?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的工作 Android的碎片。在我的应用我正在与活动片段的问题。即我在片段1 创建一个按钮并称为活动1 按钮点击。同样是在活动1 我创造了另一个按钮键,名为活性2
现在,从活性2 我叫活动1 活动1 我试图调用片段1 。但它显示出在ID错误(谁能告诉我,我们需要给它ID)。我在谷歌研究了如何调用片段活动,但我没有找到这个任何解决方案。请帮我出这个问题。先谢谢了。

我的code:

Activity1.class

 公共无效回来(视图v){ MyFragment1 fragmentS1 =新MyFragment1();
 。getFragmentManager()调用BeginTransaction()取代(android.R.id.frame_container,fragmentS1).commit()。}logcat的错误:十月4日至10日:55:28.876:E / AndroidRuntime(22103):致命异常:主要
十月4日至10日:55:28.876:E / AndroidRuntime(22103):java.lang.IllegalArgumentException异常:未找到ID 0x7f0a0004视图(com.vizteck.navigationdrawer:ID / frame_container)的片段,片段1 {429cba90#0 ID = 0x7f0a0004}
十月4日至10日:55:28.876:E / AndroidRuntime(22103):在android.app.FragmentManagerImpl.moveToState(FragmentManager.java:895)
十月4日至10日:55:28.876:E / AndroidRuntime(22103):在android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1075)
十月4日至10日:55:28.876:E / AndroidRuntime(22103):在android.app.BackStackRecord.run(BackStackRecord.java:682)
十月4日至10日:55:28.876:E / AndroidRuntime(22103):在android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1455)
十月4日至10日:55:28.876:E / AndroidRuntime(22103):在android.app.FragmentManagerImpl $ 1.run(FragmentManager.java:441)
十月4日至10日:55:28.876:E / AndroidRuntime(22103):在android.os.Handler.handleCallback(Handler.java:725)
十月4日至10日:55:28.876:E / AndroidRuntime(22103):在android.os.Handler.dispatchMessage(Handler.java:92)
十月4日至10日:55:28.876:E / AndroidRuntime(22103):在android.os.Looper.loop(Looper.java:137)
十月4日至10日:55:28.876:E / AndroidRuntime(22103):在android.app.ActivityThread.main(ActivityThread.java:5283)
十月4日至10日:55:28.876:E / AndroidRuntime(22103):在java.lang.reflect.Method.invokeNative(本机方法)
十月4日至10日:55:28.876:E / AndroidRuntime(22103):在java.lang.reflect.Method.invoke(Method.java:511)
十月4日至10日:55:28.876:E / AndroidRuntime(22103):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1102)
十月4日至10日:55:28.876:E / AndroidRuntime(22103):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
十月4日至10日:55:28.876:E / AndroidRuntime(22103):在dalvik.system.NativeStart.main(本机方法)


解决方案

试试这个..

从这个删除的android android.R.id.frame_container

如果您使用的是活动1 延长 活动使用 getFragmentManager()或者如果你使用活动1 延长 FragmentActivity 使用 getSupportFragmentManager()

像下面

  MyFragment1 fragmentS1 =新MyFragment1();
。getSupportFragmentManager()调用BeginTransaction()取代(R.id.frame_container,fragmentS1).commit()。

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.

My code:

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$1.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)

解决方案

Try this..

Remove android from this android.R.id.frame_container

if you are using activity1 extends Activity use getFragmentManager() or if you are using activity1 extends FragmentActivity use getSupportFragmentManager().

like below

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

这篇关于如何从Android中的活动呼吁片段?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆