代码之家  ›  专栏  ›  技术社区  ›  Kalai Selvan

在回收器视图项目上,单击新建片段

  •  0
  • Kalai Selvan  · 技术社区  · 7 年前

    我有一个代码,用于在具有共享首选项的回收器视图中单击项目时打开活动。我正试图对碎片做同样的处理。

    下面是活动代码。

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    
                @Override
    
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    
                    switch(position){
    
                        case 0: {
    
                            startActivity(new Intent(WeekActivity.this, DayDetail.class));
    
                            sharedPreferences.edit().putString(SEL_DAY, "Monday").apply();
    
                            break;
    
                        }
    
                        case 1: {
    
                            startActivity(new Intent(WeekActivity.this, DayDetail.class));
    
                            sharedPreferences.edit().putString(SEL_DAY, "Tuesday").apply();
    
                            break;
    
                        }
    
                        case 2: {
    
                            startActivity(new Intent(WeekActivity.this, DayDetail.class));
    
                            sharedPreferences.edit().putString(SEL_DAY, "Wednesday").apply();
    
                            break;
    
                        }
    
                        case 3: {
    
                            startActivity(new Intent(WeekActivity.this, DayDetail.class));
    
                            sharedPreferences.edit().putString(SEL_DAY, "Thursday").apply();
    
                            break;
    
                        }
    
                        case 4: {
    
                            startActivity(new Intent(WeekActivity.this, DayDetail.class));
    
                            sharedPreferences.edit().putString(SEL_DAY, "Friday").apply();
    
                            break;
    
                        }
    
                        case 5: {
    
                            startActivity(new Intent(WeekActivity.this, DayDetail.class));
    
                            sharedPreferences.edit().putString(SEL_DAY, "Saturday").apply();
    
                            break;
    
                        }
    
                        default:break;
                    }
    
                }
    
            });
    

    我试过把它分成碎片

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    
                @Override
    
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    
                    Fragment selectedFragment = null;
    
                    switch (position) {
    
                        case 0: {
    
                            selectedFragment = Timetable.newInstance();
    
                            sharedPreferences.edit().putString(SEL_DAY, "Monday").apply();
    
                            break;
    
                        }
    
                        case 1: {
    
                            selectedFragment = Timetable.newInstance();
    
                            sharedPreferences.edit().putString(SEL_DAY, "Tuesday").apply();
    
                            break;
    
                        }
    
                        case 2: {
    
                            selectedFragment = Timetable.newInstance();
    
                            sharedPreferences.edit().putString(SEL_DAY, "Wednesday").apply();
    
                            break;
    
                        }
    
                        case 3: {
    
                            selectedFragment = Timetable.newInstance();
    
                            sharedPreferences.edit().putString(SEL_DAY, "Thursday").apply();
    
                            break;
    
                        }
    
                        case 4: {
    
                            selectedFragment = Timetable.newInstance();
                            sharedPreferences.edit().putString(SEL_DAY, "Friday").apply();
    
                            break;
    
                        }
    
                        case 5: {
    
                            selectedFragment = Timetable.newInstance();
                            sharedPreferences.edit().putString(SEL_DAY, "Saturday").apply();
    
                            break;
    
                        }
    
                        default:
                            break;
    
                    }
                    FragmentTransaction transaction = ((AppCompatActivity) getActivity()).getSupportFragmentManager().beginTransaction();
                    transaction.replace(R.id.rel_layout, selectedFragment);
                    transaction.commit();
    
    
                }
    
            });
    

    我哪里出错了?我应该做哪些更改?我没有收到任何错误。与此同时,什么也没有发生。帮帮我:)

    1 回复  |  直到 7 年前
        1
  •  0
  •   Klevin Delimeta    7 年前

    尝试:

    case 0: {
             loadFragment(fragment);// method to load a fragment i.e
                                   //(loadFragment(new MyFragment())
    
             sharedPreferences.edit().putString(SEL_DAY, "Monday").apply();
             break;
            }
    

    然后创建loadFragment函数,如下所示:

    private void loadFragment(Fragment fragment) {
        // create a FragmentManager
        FragmentManager fm = getFragmentManager();
        // create a FragmentTransaction to begin the transaction and replace the Fragment
        FragmentTransaction fragmentTransaction = fm.beginTransaction();
        // replace the FrameLayout with new Fragment
        fragmentTransaction.replace(R.id.YOUR_REPLACEMENT_LAYOUT, fragment);
        // save the changes
        fragmentTransaction.commit(); 
    }