我有一個菜單HOME,SETTING,關於US等導航抽屜的片段。只有HOME有一個滑動選項卡。在應用程序的開始,家庭被打開,但在那之後,每當我再次點擊家時,它顯示錯誤說Home Home Fragment沒有附加到活動。片段不會第二次打開android
我的代碼如下
Drawer.java 是mainAciticity
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
myDrawerLayout.closeDrawer(drawerBody);
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
Fragment fragment;
switch (position){
case 0:
fragment = new Home();
fragmentTransaction.replace(R.id.main_content, fragment);
break;
case 1:
fragment = new Settings();
fragmentTransaction.replace(R.id.main_content, fragment);
break;
case 2:
fragment = new Aboutus();
fragmentTransaction.replace(R.id.main_content, fragment);
break;
case 3:
fragment = new Help_and_Feedback();
fragmentTransaction.replace(R.id.main_content, fragment);
break;
case 4:
fragment = new Fill_up_form();
fragmentTransaction.replace(R.id.main_content, fragment);
break;
}
setTitle(position);
fragmentTransaction.commit();
}
Home.java
public class Home extends Fragment implements ActionBar.TabListener {
ViewPager myViewPager;
ActionBar myActionBar;
MyFragmentPagerAdapter myFragmentPagerAdapter;
String[] selectedTabImage;
String[] unselectedTabImage;
String[] BloodGroups;
public Home() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v = inflater.inflate(R.layout.home, container, false);
//Initialization
myViewPager = (ViewPager) v.findViewById(R.id.viewpager);
myFragmentPagerAdapter = new MyFragmentPagerAdapter(getActivity().getSupportFragmentManager());
//viewpager work
myViewPager.setAdapter(myFragmentPagerAdapter);
myViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int i, float v, int i2) {
}
@Override
public void onPageSelected(int i) {
myActionBar.setSelectedNavigationItem(i);
}
@Override
public void onPageScrollStateChanged(int i) {
}
});
myActionBar =((ActionBarActivity)getActivity()).getSupportActionBar();
myActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
//get the array of images for tab
selectedTabImage = getResources().getStringArray(R.array.tab_selected);
unselectedTabImage = getResources().getStringArray(R.array.tab_unselected);
BloodGroups = getResources().getStringArray(R.array.blood_groups);
//Add Tabs
for (int i = 0; i < myFragmentPagerAdapter.getCount(); i++) {
String name = selectedTabImage[i];
int tabId = getResources().getIdentifier(name,"drawable", getActivity().getPackageName());
myActionBar.addTab(myActionBar.newTab().setIcon(tabId).setTabListener(this));
}
return v;
}
@Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
int pos = tab.getPosition();
myViewPager.setCurrentItem(pos);
String name = selectedTabImage[pos];
int tabId = getResources().getIdentifier(name,"drawable", getActivity().getPackageName());
tab.setIcon(tabId);
}
@Override
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
String name = selectedTabImage[tab.getPosition()];
int tabId = getResources().getIdentifier(name,"drawable", getActivity().getPackageName());
tab.setIcon(tabId);
}
@Override
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
}
public class MyFragmentPagerAdapter extends FragmentPagerAdapter {
public MyFragmentPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
Fragment fragment = new DonarList();
Bundle args = new Bundle();
args.putInt("bloodGroupPosition", position);
fragment.setArguments(args);
return fragment;
}
@Override
public int getCount() {
return 8;
}
}
@Override
public void onStop() {
super.onStop();
myActionBar.setNavigationMode(0);
}
}
錯誤棧跟蹤
05-29 14:44:31.961 12034-12034/com.example.p6.bloodies E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.IllegalStateException: Fragment Home{4120fd50} not attached to Activity
at android.support.v4.app.Fragment.getResources(Fragment.java:619)
at com.example.p6.bloodies.Home.onTabSelected(Home.java:114)
at android.support.v7.internal.app.WindowDecorActionBar.selectTab(WindowDecorActionBar.java:634)
at android.support.v7.internal.app.WindowDecorActionBar.setSelectedNavigationItem(WindowDecorActionBar.java:414)
at android.support.v7.internal.app.WindowDecorActionBar.setNavigationMode(WindowDecorActionBar.java:1297)
at com.example.p6.bloodies.Home.onCreateView(Home.java:72)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:1786)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:947)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1126)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:739)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1489)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:454)
at android.os.Handler.handleCallback(Handler.java:605)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:817)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
at dalvik.system.NativeStart.main(Native Method)
在線路中的代碼72
myActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
在管線中的代碼114
INT tabId = getActivity()getResources()則getIdentifier(姓名, 「可拉伸」,getActivity()getPackageName())。。
我避免的getResource解決了這個問題()。則getIdentifier()線。我不知道它爲什麼會造成問題。你能提供一些關於這方面的信息嗎? – umuieme