Как вызвать фрагмент из активности в android?
Я работаю над android fragments
. В моем приложении у меня проблема с activity
и fragment
. i.e я создал button
в fragment1
и назвал activity1
в этом button
клике. Снова в activity1
я создал еще один button
и назвал activity2
.
Теперь из activity2
я вызвал activity1
и из activity1
, я пытаюсь вызвать fragment1
. Но он показывает ошибку при id (может ли кто-нибудь сказать мне, какой идентификатор нам нужно дать). Я исследовал в google о том, как вызвать 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)
Ответы
Ответ 1
Попробуйте это.
Удалите андроид из этого android.R.id.frame_container
если вы используете activity1
extends Activity
использовать getFragmentManager()
или используете activity1
extends FragmentActivity
использовать getSupportFragmentManager()
.
как показано ниже
MyFragment1 fragmentS1 = new MyFragment1();
getSupportFragmentManager().beginTransaction().replace(R.id.frame_container, fragmentS1).commit();
Ответ 2
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();
Ответ 3
Запишите его в своей деятельности, как показано ниже
Fragment fragment = new YourFragment();
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.replace(R.id.output1, fragment);
transaction.addToBackStack(null);
transaction.commit();
Ответ 4
Сделайте это: -
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager
.beginTransaction();
MyFragment1 fragmentS1 = new MyFragment1();
fragmentTransaction.replace(R.id.realtabcontent, mBarcodeScreen);
fragmentTransaction.commit();
Удачи!!
Ответ 5
Просто вы можете вызвать вот так:
Fragment fragment = new FragmentName();
FragmentManager fragmentManager = ((Activity) context).getFragmentManager();
fragmentManager.beginTransaction().replace(R.id.fragment_main, fragment).commit();