1

我有這個應用程序,即時使用片段,但不知何故,每次我啓動應用程序,每個活動(片段)啓動兩次。我對此感到震驚,但我找不到答案。有人能幫我嗎?片段開始兩次

這裏是我的主要FragmentActivity:

public class TestSearch extends Activity { 
    //this activity starts a fragment 
    private DrawerLayout mDrawerLayout; 
    private ListView mDrawerList; 
    // private ActionBarDrawerToggle mDrawerToggle; 
    private ArrayList<Device> devices; 
    private ArrayList<Recepie> recepies, mainRecepies; 
    private ArrayList<Recepie> searchResult; 
    private LinearLayout sideWrapper; 
    private EditText src; 

    ArrayList<Categories> cats; 

    boolean isTablet = false; 

    @SuppressWarnings("unchecked") 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.test_search); 
     Log.v("--", "started"); 
     if (Constants.isTablet(this)) { 
      isTablet = true; 
      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
     } else { 
      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
     } 

     devices = new ArrayList<Device>(); 
     recepies = new ArrayList<Recepie>(); 
     mainRecepies = new ArrayList<Recepie>(); 

     devices = (ArrayList<Device>) getIntent().getSerializableExtra(
       Constants.DEVICES_EXTRA); 

     recepies = getIntent().getParcelableArrayListExtra("all"); 
     mainRecepies = getIntent().getParcelableArrayListExtra(
       Constants.MAINRECEPIES); 
     // mTitle = mDrawerTitle = getTitle(); 
     cats = new ArrayList<Categories>(); 
     cats = (ArrayList<Categories>) getIntent().getSerializableExtra("cats"); 

     mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
     mDrawerList = (ListView) findViewById(R.id.left_drawer); 
     sideWrapper = (LinearLayout) findViewById(R.id.listwraper); 

     // set a custom shadow that overlays the main content when the drawer 
     // opens 
     mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, 
       GravityCompat.START); 

     // set up the drawer's list view with items and click listener 

     // View header = getLayoutInflater().inflate(R.layout.search_item, 
     // null); 
     src = (EditText) findViewById(R.id.search_est); 
     src.setOnKeyListener(new OnKeyListener() { 
      public boolean onKey(View v, int keyCode, KeyEvent event) { 
       // If the event is a key-down event on the "enter" button 
       if ((event.getAction() == KeyEvent.ACTION_DOWN) 
         && (keyCode == KeyEvent.KEYCODE_ENTER)) { 
        Log.v("--", "Start search"); 
        if (src.getText().length() > 0) { 
         searchResult = new ArrayList<Recepie>(); 
         final ProgressDialog progress = ProgressDialog.show(
           TestSearch.this, 
           getString(R.string.please_wait), 
           getString(R.string.getting_search_results), 
           true); 
         new AsyncTask<Void, Void, Void>() { 
          protected void onPreExecute() { 
           InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
           imm.hideSoftInputFromWindow(
             src.getWindowToken(), 0); 
          }; 

          @Override 
          protected Void doInBackground(Void... params) { 
           searchResult = getSearchResults(src.getText() 
             .toString()); 
           return null; 
          } 

          protected void onPostExecute(Void result) { 

           // set screen to search fragment 
           Fragment fragment = new SideSearchFragment(); 
           Bundle args = new Bundle(); 
           args.putString("cat-title", src.getText() 
             .toString()); 
           args.putSerializable("cats", cats); 
           args.putBoolean(Constants.SEARCH, true); 
           args.putParcelableArrayList(
             Constants.SEARCH_RESULTS, searchResult); 
           fragment.setArguments(args); 
           progress.dismiss(); 
           FragmentManager fragmentManager = getFragmentManager(); 
           fragmentManager.beginTransaction() 
             .replace(R.id.content_frame, fragment) 
             .addToBackStack("search_results") 
             .commit(); 

           // setTitle(mPlanetTitles[position]); 
           mDrawerLayout.closeDrawer(sideWrapper); 

           // clear search text and hide keyboard 
           src.setText(""); 

          }; 
         }.execute(); 
        } 
        return true; 
       } 
       return false; 
      } 
     }); 

     // mDrawerList.addHeaderView(header); 
     SideAdapter adapter = new SideAdapter(this, cats); 
     mDrawerList.setAdapter(adapter); 
     mDrawerList.setOnItemClickListener(new DrawerItemClickListener()); 

     initActionBar(); 
     // enable ActionBar app icon to behave as action to toggle nav drawer 
     getActionBar().setDisplayHomeAsUpEnabled(false); 
     getActionBar().setHomeButtonEnabled(true); 

     if (savedInstanceState == null) { 
      showMainFragment(); 
     } 
    } 

    /* The click listner for ListView in the navigation drawer */ 
    private class DrawerItemClickListener implements 
      ListView.OnItemClickListener { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, 
       long id) { 
      selectItem(position); 
     } 
    } 

    private void showFavoritesFragment() { 

     Fragment fragment = new FavoritesFragment(); 
     Bundle args = new Bundle(); 
     args.putSerializable("all", recepies); 
     args.putBoolean("search", true); 
     args.putSerializable("cats", cats); 
     fragment.setArguments(args); 
     FragmentManager fragmentManager = getFragmentManager(); 
     fragmentManager.beginTransaction() 
       .replace(R.id.content_frame, fragment) 
       .addToBackStack("favorites").commit(); 
    } 

    private void showMainFragment() { 
     Fragment fragment = new MainFragment(); 
     Bundle args = new Bundle(); 
     args.putParcelableArrayList("all", recepies); 
     args.putSerializable("cats", cats); 
     args.putParcelableArrayList(Constants.MAINRECEPIES, mainRecepies); 
     args.putBoolean("search", true); 
     fragment.setArguments(args); 

     FragmentManager fragmentManager = getFragmentManager(); 
     fragmentManager.beginTransaction().add(R.id.content_frame, fragment) 
       .commit(); 

    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
     case android.R.id.home: 
      if (mDrawerLayout.isDrawerOpen(sideWrapper)) 
       mDrawerLayout.closeDrawer(sideWrapper); 
      else 
       mDrawerLayout.openDrawer(sideWrapper); 
      return true; 

     case R.id.main_action_fav: 

      showFavoritesFragment(); 
      return true; 
     case R.id.main_action_choose_cats: 
      Intent intent = new Intent(this, CircleListActivity.class); 
      intent.putExtra(Constants.DEVICES_EXTRA, devices); 
      intent.putExtra("cats", cats); 
      startActivity(intent); 
      // finish(); 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
     } 
    } 

    private void initActionBar() { 
     getActionBar().setBackgroundDrawable(
       new ColorDrawable(Color.parseColor("#e91a34"))); 
     getActionBar().setCustomView(R.layout.actionbar_custom_view_home); 
     // actionBar.setcu 
     getActionBar().setDisplayShowTitleEnabled(false); 
     getActionBar().setDisplayShowCustomEnabled(true); 
     getActionBar().setDisplayUseLogoEnabled(false); 
     getActionBar().setDisplayShowHomeEnabled(true); 
     getActionBar().setHomeButtonEnabled(false); 
     getActionBar().setIcon(R.drawable.menu); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.main, menu); 
     return true; 
    } 

    private void selectItem(int position) { 
     // update the main content by replacing fragments 
     Fragment fragment = new SearchFragment(); 
     Bundle args = new Bundle(); 
     args.putString("cat-title", cats.get(position).getTitle()); 
     args.putInt(Constants.CATEGORY_ID, cats.get(position).getId()); 
     args.putSerializable("cats", cats); 
     fragment.setArguments(args); 

     FragmentManager fragmentManager = getFragmentManager(); 
     fragmentManager.beginTransaction() 
       .replace(R.id.content_frame, fragment).addToBackStack(null) 
       .commit(); 

     // update selected item and title, then close the drawer 
     mDrawerList.setItemChecked(position, true); 
     mDrawerList.setSelection(position); 
     // setTitle(mPlanetTitles[position]); 
     mDrawerLayout.closeDrawer(sideWrapper); 
    } 

    @Override 
    public void setTitle(CharSequence title) { 
     // mTitle = title; 
     // getActionBar().setTitle(mTitle); 
    } 

    /** 
    * When using the ActionBarDrawerToggle, you must call it during 
    * onPostCreate() and onConfigurationChanged()... 
    */ 

    @Override 
    protected void onPostCreate(Bundle savedInstanceState) { 
     super.onPostCreate(savedInstanceState); 
     // Sync the toggle state after onRestoreInstanceState has occurred. 
     // mDrawerToggle.syncState(); 
    } 

    @Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     super.onConfigurationChanged(newConfig); 
     // Pass any configuration change to the drawer toggls 
     // mDrawerToggle.onConfigurationChanged(newConfig); 
    } 

    // This function gets the search results 

    public ArrayList<Recepie> getSearchResults(String keyword) { 
     ArrayList<Recepie> resultRecepie = new ArrayList<Recepie>(); 
     JSONParser jParser = new JSONParser(); 
     // get JSON data from URL 
     JSONObject jObj = jParser 
       .getJSONObjectFromUrl("http://oursson-recipes.outsourcingfarm.com/index.php/jsoner/getRecipe?query=" 
         + keyword); 

     try { 
      JSONArray withTechnics = jObj.getJSONArray("with_technics"); 
      JSONArray withoutTechnics = jObj.getJSONArray("without_technics"); 
      for (int i = 0; i < withTechnics.length(); i++) { 
       JSONObject with = withTechnics.getJSONObject(i); 
       boolean bool_tehcnics = true; 
       if (with.getInt("with_technics") == 1) 
        bool_tehcnics = false; 
       boolean my_devices = false; 
       if (with.getInt("mydevices") == 1) 
        my_devices = true; 
       JSONArray devices = with.getJSONArray("devices"); 
       ArrayList<Integer> devicesIDs = new ArrayList<Integer>(); 
       for (int k = 0; k < devices.length(); k++) { 
        devicesIDs.add(Integer.valueOf(devices.getString(k))); 
       } 

       resultRecepie.add(new Recepie(bool_tehcnics, my_devices, with 
         .getInt("id"), with.getInt("persons"), with 
         .getString("title"), 
         with.getString("preparation_time"), with 
           .getString("image_1"), devicesIDs)); 
      } 

      for (int i = 0; i < withoutTechnics.length(); i++) { 
       JSONObject with = withoutTechnics.getJSONObject(i); 
       boolean bool_tehcnics = false; 
       if (with.getInt("with_technics") == 1) 
        bool_tehcnics = true; 
       boolean my_devices = false; 
       if (with.getInt("mydevices") == 1) 
        my_devices = true; 
       JSONArray devices = with.getJSONArray("devices"); 
       ArrayList<Integer> devicesIDs = new ArrayList<Integer>(); 
       for (int k = 0; k < devices.length(); k++) { 
        devicesIDs.add(Integer.valueOf(devices.getString(k))); 
       } 

       resultRecepie.add(new Recepie(bool_tehcnics, my_devices, with 
         .getInt("id"), with.getInt("persons"), with 
         .getString("title"), 
         with.getString("preparation_time"), with 
           .getString("image_1"), devicesIDs)); 
      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
     return resultRecepie; 
    } 

} 

這裏是一個片段(這個我在開始時開始):

public class MainFragment extends Fragment { 

    private MainPhoneAdapter adapter; 
    private boolean search = false; 
    private ArrayList<Categories> cats; 
    private ArrayList<Recepie> recepies, mainRecepies; 
    private ArrayList<Recepie> withoTechnics; 
    private ArrayList<Recepie> wTechnics; 
    SharedPreferences prefs; 
    ImageView intro; 
    ProgressDialog dialog; 

    Animation animationFadeOut; 

    Display display; 

    public MainFragment() { 
     // Empty constructor required for fragment subclasses 

    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 

     View rootView = inflater.inflate(R.layout.main, container, false); 
     Log.v("--", "main create"); 
     if (Constants.isTablet(getActivity())) { 
      getActivity().setRequestedOrientation(
        ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
     } else { 
      getActivity().setRequestedOrientation(
        ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
     } 

     cats = (ArrayList<Categories>) getArguments().getSerializable("cats"); 
     search = getArguments().getBoolean("search"); 
     WindowManager wm = (WindowManager) getActivity().getSystemService(
       Context.WINDOW_SERVICE); 
     display = wm.getDefaultDisplay(); 
     prefs = getActivity().getSharedPreferences(
       getActivity().getPackageName(), Context.MODE_PRIVATE); 

     initActionBar(); 
     mainRecepies = new ArrayList<Recepie>(); 
     recepies = new ArrayList<Recepie>(); 
     wTechnics = new ArrayList<Recepie>(); 
     withoTechnics = new ArrayList<Recepie>(); 
     dialog = new ProgressDialog(getActivity()); 
     if (getActivity().getIntent().getBooleanExtra("fromDevs", false) 
       && search) { 
      dialog.setMessage("Loading.."); 
      dialog.show(); 
      parseJson(rootView); 
     } else { 
      recepies = getArguments().getParcelableArrayList("all"); 
      mainRecepies = getArguments().getParcelableArrayList(
        Constants.MAINRECEPIES); 
      Log.v("--", mainRecepies.size() + " MAiN SIZE"); 
      // Log.v("--", "main frag" + recepies.size()); 
      for (int i = 0; i < mainRecepies.size(); i++) { 
       if (mainRecepies.get(i).isWithTechnics()) 
        wTechnics.add(mainRecepies.get(i)); 
       else 
        withoTechnics.add(mainRecepies.get(i)); 
      } 
      if (Constants.isTablet(getActivity())) { 
       populateViewForTablet(rootView); 
       populateWithouTechnicsTablet(rootView); 
       showAnimation(rootView); 
      } else 
       populateForPhones(rootView); 
     } 
     initImgLoader(); 
     return rootView; 
    } 

    private void initActionBar() { 
     getActivity().getActionBar().setBackgroundDrawable(
       new ColorDrawable(Color.parseColor("#e91a34"))); 
     getActivity().getActionBar().setCustomView(
       R.layout.actionbar_custom_view_home); 
     // actionBar.setcu 
     getActivity().getActionBar().setDisplayShowTitleEnabled(false); 
     getActivity().getActionBar().setDisplayShowCustomEnabled(true); 
     getActivity().getActionBar().setDisplayUseLogoEnabled(false); 
     getActivity().getActionBar().setDisplayShowHomeEnabled(true); 
     getActivity().getActionBar().setNavigationMode(
       ActionBar.NAVIGATION_MODE_STANDARD); 
     // getActivity().getActionBar().setHomeButtonEnabled(false); 
     // getActivity().getActionBar().setIcon(R.drawable.menu); 
    } 

    private void initImgLoader() { 
     ImageLoader.getInstance().init(
       ImageLoaderConfiguration.createDefault(getActivity())); 
    } 

    private void showAnimation(View view) { 
     if (!prefs.getBoolean("main_shown", false)) { 
      prefs.edit().putBoolean("main_shown", true).commit(); 
      startActivity(new Intent(getActivity(), Overlay.class)); 
      getActivity().overridePendingTransition(R.anim.fadein, 
        R.anim.fadeout); 
     } 
    } 

    private void parseJson(final View rootView) { 
     new AsyncTask<Void, Void, Void>() { 

      @Override 
      protected Void doInBackground(Void... params) { 
       // add static ids from prefs as device ID's 
       String devs[] = prefs.getString(Constants.SELECTED_DEVICES, 
         "1,23,4").split(","); 
       int end = devs.length; 

       HashSet<Integer> set = new HashSet<Integer>(); 

       for (int i = 0; i < end; i++) { 
        set.add(Integer.valueOf(devs[i])); 
       } 
       String devicesUrl = ""; 
       Iterator<Integer> it = set.iterator(); 
       while (it.hasNext()) { 
        devicesUrl += it.next() + ","; 
       } 
       devicesUrl = devicesUrl.substring(0, devicesUrl.length() - 1); 
       Log.v("--", devicesUrl + " DV"); 

       getJSONFromUrl("http://oursson-recipes.outsourcingfarm.com/index.php/jsoner/getRecipe?devices=" 
         + devicesUrl); 
       getMainScreenRecepies("http://oursson-recipes.outsourcingfarm.com/index.php/jsoner/getHome?devices=" 
         + devicesUrl); 
       return null; 
      } 

      protected void onPostExecute(Void result) { 

       // if TABLET 
       if (Constants.isTablet(getActivity())) { 
        populateViewForTablet(rootView); 
        populateWithouTechnicsTablet(rootView); 
        showAnimation(rootView); 
       } else 
        populateForPhones(rootView); 

      }; 
     }.execute(); 
    } 

    private void populateForPhones(View rootView) { 
     ListView gridView = (ListView) rootView.findViewById(R.id.main_grid); 
     adapter = new MainPhoneAdapter(getActivity(), wTechnics); 
     gridView.setAdapter(adapter); 
     if (dialog.isShowing()) 
      dialog.dismiss(); 
     gridView.setOnItemClickListener(new OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> parent, View view, 
        int position, long id) { 
       Intent intent = new Intent(getActivity(), 
         FullScreenBanner.class); 
       intent.putExtra("cats", cats); 
       intent.putExtra(Constants.RECEPIES_EXTRA, 
         wTechnics.get(position)); 
       intent.putExtra("fromMain", true); 
       intent.putExtra("recepieExtra", wTechnics.get(position).getId()); 
       startActivity(intent); 
      } 
     }); 
    } 

    private void populateViewForTablet(View rootView) { 

     withTest(rootView); 
    } 

    // 
    private void withTest(View rootView) { 

     LinearLayout parent = ((LinearLayout) rootView 
       .findViewById(R.id.main_parent)); 

     Point size = new Point(); 
     display.getSize(size); 
     int width = getActivity().getResources().getDisplayMetrics().widthPixels; 
     int height = (getActivity().getResources().getDisplayMetrics().heightPixels/3) * 2; 

     for (int i = 0; i < 3; i++) { 
      final int position = i; 
      View r = LayoutInflater.from(getActivity()).inflate(
        R.layout.main_item_gray, parent, false); 
      TextView top = (TextView) r 
        .findViewById(R.id.main_item_oursson_or_not); 
      top.setBackgroundResource(R.drawable.redtint); 
      ImageView itemBg = (ImageView) r.findViewById(R.id.main_item_img); 
      TextView title = (TextView) r.findViewById(R.id.main_item_title); 
      TextView time = (TextView) r.findViewById(R.id.main_item_time); 
      TextView persons = (TextView) r 
        .findViewById(R.id.main_item_persons); 
      String imgLink = wTechnics.get(i).getImage_1() 
        .replace("[HEIGHT]", height + "") 
        .replace("[WIDTH]", width/3 + ""); 

      title.setText(wTechnics.get(i).getTitle()); 
      time.setText(wTechnics.get(i).getPreparation_time()); 
      persons.setText(wTechnics.get(i).getPersons() + ""); 
      ImageLoader.getInstance().displayImage(imgLink, itemBg); 
      parent.addView(r); 
      if (dialog.isShowing()) 
       dialog.dismiss(); 
      r.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        Intent intent = new Intent(getActivity(), 
          FullScreenBanner.class); 
        intent.putExtra(Constants.RECEPIES_EXTRA, 
          wTechnics.get(position)); 
        intent.putExtra("cats", cats); 
        intent.putExtra("recepieExtra", wTechnics.get(position) 
          .getId()); 
        startActivity(intent); 
       } 
      }); 
     } 
    } 

    // 

    private void populateWithouTechnicsTablet(View rootView) { 

     LinearLayout parent = ((LinearLayout) rootView 
       .findViewById(R.id.main_without)); 
     Point size = new Point(); 
     display.getSize(size); 
     int width = getActivity().getResources().getDisplayMetrics().widthPixels; 
     int height = getActivity().getResources().getDisplayMetrics().heightPixels/2; 
     for (int i = 0; i < 4; i++) { 
      final int position = i; 
      View r = LayoutInflater.from(getActivity()).inflate(
        R.layout.main_item_gray_notfeatured, parent, false); 
      ImageView itemBg = (ImageView) r.findViewById(R.id.main_item_img); 
      TextView title = (TextView) r.findViewById(R.id.main_item_title); 
      TextView time = (TextView) r.findViewById(R.id.main_item_time); 
      TextView persons = (TextView) r 
        .findViewById(R.id.main_item_persons); 

      String imgLink = withoTechnics.get(i).getImage_1() 
        .replace("[HEIGHT]", height + "") 
        .replace("[WIDTH]", width/4 + ""); 

      title.setText(withoTechnics.get(i).getTitle()); 
      time.setText(withoTechnics.get(i).getPreparation_time()); 
      persons.setText(withoTechnics.get(i).getPersons() + ""); 
      ImageLoader.getInstance().displayImage(imgLink, itemBg); 
      parent.addView(r); 
      if (dialog.isShowing()) 
       dialog.dismiss(); 
      r.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        Intent intent = new Intent(getActivity(), 
          FullScreenBanner.class); 
        intent.putExtra(Constants.RECEPIES_EXTRA, 
          withoTechnics.get(position)); 
        intent.putExtra("cats", cats); 
        intent.putExtra("recepieExtra", withoTechnics.get(position) 
          .getId()); 
        startActivity(intent); 
       } 
      }); 
     } 
    } 

    public void getMainScreenRecepies(String url) { 
     JSONParser jParser = new JSONParser(); 
     // get JSON data from URL 
     JSONObject jObj = jParser.getJSONObjectFromUrl(url); 

     try { 
      JSONArray withTechnics = jObj.getJSONArray("with_technics"); 
      JSONArray withoutTechnics = jObj.getJSONArray("without_technics"); 
      for (int i = 0; i < withTechnics.length(); i++) { 
       JSONObject with = withTechnics.getJSONObject(i); 

       mainRecepies.add(new Recepie(true, with.getInt("id"), with 
         .getInt("persons"), with.getString("title"), with 
         .getString("preparation_time"), with 
         .getString("image_1"))); 
      } 

      for (int i = 0; i < withoutTechnics.length(); i++) { 
       JSONObject with = withoutTechnics.getJSONObject(i); 

       mainRecepies.add(new Recepie(false, with.getInt("id"), with 
         .getInt("persons"), with.getString("title"), with 
         .getString("preparation_time"), with 
         .getString("image_1"))); 
      } 
      Log.v("--", "PARSED " + mainRecepies.size() + " " + url); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 

    public void getJSONFromUrl(String url) { 

     JSONParser jParser = new JSONParser(); 
     // get JSON data from URL 
     JSONObject jObj = jParser.getJSONObjectFromUrl(url); 
     Log.v("--", "asds"); 
     try { 
      JSONArray withTechnics = jObj.getJSONArray("with_technics"); 
      JSONArray withoutTechnics = jObj.getJSONArray("without_technics"); 
      for (int i = 0; i < withTechnics.length(); i++) { 
       JSONObject with = withTechnics.getJSONObject(i); 
       boolean bool_tehcnics = false; 
       if (with.getInt("with_technics") == 1) 
        bool_tehcnics = true; 
       boolean my_devices = false; 
       if (with.getInt("mydevices") == 1) 
        my_devices = true; 
       JSONArray devices = with.getJSONArray("devices"); 
       ArrayList<Integer> devicesIDs = new ArrayList<Integer>(); 
       for (int k = 0; k < devices.length(); k++) { 
        devicesIDs.add(Integer.valueOf(devices.getString(k))); 
       } 
       wTechnics.add(new Recepie(bool_tehcnics, my_devices, with 
         .getInt("id"), with.getInt("persons"), with 
         .getString("title"), 
         with.getString("preparation_time"), with 
           .getString("image_1"), devicesIDs)); 

       recepies.add(new Recepie(bool_tehcnics, my_devices, with 
         .getInt("id"), with.getInt("persons"), with 
         .getString("title"), 
         with.getString("preparation_time"), with 
           .getString("image_1"), devicesIDs)); 
      } 

      for (int i = 0; i < withoutTechnics.length(); i++) { 
       JSONObject with = withoutTechnics.getJSONObject(i); 
       boolean bool_tehcnics = false; 
       if (with.getInt("with_technics") == 1) 
        bool_tehcnics = true; 
       boolean my_devices = false; 
       if (with.getInt("mydevices") == 1) 
        my_devices = true; 
       JSONArray devices = with.getJSONArray("devices"); 
       ArrayList<Integer> devicesIDs = new ArrayList<Integer>(); 
       for (int k = 0; k < devices.length(); k++) { 
        devicesIDs.add(Integer.valueOf(devices.getString(k))); 
       } 
       withoTechnics.add(new Recepie(bool_tehcnics, my_devices, with 
         .getInt("id"), with.getInt("persons"), with 
         .getString("title"), 
         with.getString("preparation_time"), with 
           .getString("image_1"), devicesIDs)); 

       recepies.add(new Recepie(bool_tehcnics, my_devices, with 
         .getInt("id"), with.getInt("persons"), with 
         .getString("title"), 
         with.getString("preparation_time"), with 
           .getString("image_1"), devicesIDs)); 
      } 
      Log.v("--", recepies.size() + " RS"); 
     } catch (JSONException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
} 
+0

你是怎麼看到這個的? – Luksprog 2014-08-28 14:08:34

+0

@Luksprog當我在平板電腦上測試應用程序,並在logCat – 2014-08-28 14:11:51

+0

[Fragment調用兩次](http://stackoverflow.com/questions/25556032/fragment-called-twice) – Darwind 2014-08-28 21:45:35

回答

0

也許使用newInstance方法將糾正這個出發兩片段。當我查看片段示例時,我看到很多newInstance代碼。

public class MainFragment extends Fragment { 

public static Fragment newInstance(int instance# pass in receipieces and cats here) { 
    MainFragment f = new MainFragment(); 
    // Supply num input as an argument. 
    Bundle args = new Bundle(); 
    args.putParcelableArrayList("all", recepies); 
    args.putSerializable("cats", cats); 
    args.putParcelableArrayList(Constants.MAINRECEPIES, mainRecepies); 
    args.putBoolean("search", true); 
    fragment.setArguments(args); 
    return f; 
} 

同時回到顯示片段使用新實例啓動片段的活動中。

private void showMainFragment() { 
    Fragment fragment = MainFragment.newInstacne(instance# pass in recipies and cats here); 

    FragmentManager fragmentManager = getFragmentManager(); 
    fragmentManager.beginTransaction().add(R.id.content_frame, fragment) 
      .commit(); 

}