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

时间:2014-04-10 04:24:35

标签: android android-fragments

我正在研究android fragments。在我的应用中,我遇到了activityfragment的问题。即我在button中创建了fragment1,并在activity1点击中调用button。我再次在activity1中创建了另一个button并调用activity2。 现在从activity2我致电activity1activity1,我试着致电fragment1。但它在id上显示错误(任何人都可以告诉我我们需要提供哪个ID)。我在谷歌研究如何从fragment拨打activity,但我没有找到任何解决方案。请帮我解决这个问题。提前谢谢。

我的代码:

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)

5 个答案:

答案 0 :(得分:8)

试试这个..

从此android.R.id.frame_container

中删除android

如果您使用activity1 延伸 Activity使用getFragmentManager(),或者如果您使用activity1 延伸 { {1}}使用FragmentActivity

如下所示

getSupportFragmentManager()

答案 1 :(得分:6)

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();

答案 2 :(得分:2)

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

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

答案 3 :(得分:1)

这样做: -

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

祝你好运!!

答案 4 :(得分:0)

只需你可以这样打电话:

$("#form-id").submit(function(){

    your function;

});