2016-07-01 4 views
0

У меня есть 3 tabfragments, прикрепленных к табусту, когда я помещаю данные в текстовое представление, а затем я выбираю другую вкладку, данные первой вкладки стираются, но я понимаю, что когда я выберите вкладку, которую перезагружает фрагмент.tabfragment перезагружается каждый раз, когда я выбираю вкладку

Мой вопрос в том, как я могу выбрать вкладку без перезагрузки ее содержимого? Значения textview очищаются, когда я выбираю одну и ту же вкладку после выбора другой вкладки.

Основной вид деятельности, где я создал все вкладки

private void initTabs() 
{ 

    boolean createDoneActivityBtn = true; 

    thMain = (FragmentTabHost) findViewById(R.id.thMain); 


    thMain.setup(this, getSupportFragmentManager(), R.id.flTabContent); 

    thMain.addTab(thMain.newTabSpec("AddLabourCropFieldTab").setIndicator("Cultivos") 
      , AddLabourCropFieldTab.class , null); 

    thMain.addTab(thMain.newTabSpec("AddLabourDoneActivityTab").setIndicator("Info. General") 
      , AddLabourDoneActivityTab.class , null); 

    if( activityName.equals("Riego")) 
    { 
     thMain.addTab(thMain.newTabSpec("AddLabourIrrigationTab").setIndicator("Info. de Riego") 
       , AddLabourIrrigationTab.class , null); 
    } 


    if( activityName.equals("Siembra")) 
    { 
     thMain.addTab(thMain.newTabSpec("AddLabourSowingTab").setIndicator("Info. de Siembra") 
       , AddLabourSowingTab.class, null); 
    } 

    if( activityName.equals("Fertilizacion")) 
    { 
     thMain.addTab(thMain.newTabSpec("AddLabourInputTab").setIndicator("Info. de Insumo") 
       , AddLabourInputTab.class, null); 
    } 


}// 

первая закладка,

@Override 
    public void onActivityCreated(@Nullable Bundle savedInstanceState) 
    { 
     super.onActivityCreated(savedInstanceState); 

     this.setRetainInstance(true); 

     initCropFieldTabContent(); 


    }// 

private void initCropFieldTabContent() 
{ 
    AddLabour act = (AddLabour) getActivity(); 

    AlertDialog.Builder builder = new AlertDialog.Builder(act); 
    builder.setTitle("A que cultivos se aplicara la labor?"); 

    List<CustCropField> cropFieldList = CustCropField.listAll(CustCropField.class); 

    Log.d("initcrop", " valor del listado " + cropFieldList.size()); 

    ListAdapter cropfieldAdapter = 
      new ArrayAdapter(act.getApplicationContext() , R.layout.spinner_row, cropFieldList); 

     //lvCropfield = (ListView)act.findViewById(R.id.lvCropfield); 
     lvCropfield = new ListView(act); 
    try 
    { 
     lvCropfield.setAdapter(cropfieldAdapter); 
     lvCropfield.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 
     lvCropfield.setOnItemClickListener(new OnItemClickListener() 
     { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
      { 
       CustCropField ccf = (CustCropField) parent.getItemAtPosition(position); 
       Log.d("lvpersonal","click al item: "+position+" nombre: "+ccf.toString()); 

       if (cropFieldSelected.contains(ccf)) 
       { 
        cropFieldSelected.remove(ccf); 
        Log.d("lvpersonal","removido crop "+ccf.getName()); 
       } 
       else 
       { 
        cropFieldSelected.add(ccf); 
        Log.d("lvpersonal","agregado crop"+ccf.getName()); 
       } 

       showTextViewContent(R.id.tvCropFieldList); 

      }// 
     }); 
     lvCropfield.setVisibility(View.VISIBLE); 
    } 
    catch(Exception e) 
    { 
     Log.e("error inp act"," error en activityinput-> "+e.getMessage()); 
    } 

    builder.setView(lvCropfield); 
    cropDialog = builder.create(); 

    //aqui el otro listado (el de personal) 
    builder = new AlertDialog.Builder(act); 
    builder.setTitle("personal que aplicara la labor?"); 

    List<Personal> personalList = Personal.listAll(Personal.class); 

    ListAdapter personalAdapter = 
      new ArrayAdapter(act.getApplicationContext() , R.layout.spinner_row, personalList); 


    //lvPersonal = (ListView)act.findViewById(R.id.lvPersonal); 
    lvPersonal = new ListView(act); 
    try 
    { 
     lvPersonal.setAdapter(personalAdapter); 
     lvPersonal.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 
     lvPersonal.setOnItemClickListener(new OnItemClickListener() 
     { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
      { 
       Personal per = (Personal) parent.getItemAtPosition(position); 
       Log.d("lvpersonal","click al item: "+position+" nombre: "+per.toString()); 

// CustCropField CCF = (CustCropField) parent.getItemAtPosition (положение); // Log.d ("lvpersonal", "click al item:" + position + "nombre:" + ccf.toString());

   if (personalSelected.contains(per)) 
       { 
        personalSelected.remove(per); 
        Log.d("lvpersonal","removido personal "+per.getName()); 
       } 
       else 
       { 
        personalSelected.add(per); 
        Log.d("lvpersonal","agregadp personal "+per.getName()); 
       } 

       showTextViewContent(R.id.tvPersonalList); 

      }// 
     });//onitemclicklistener 
     lvPersonal.setVisibility(View.VISIBLE); 
    } 
    catch(Exception e) 
    { 
     Log.e("error inp act"," error en activityinput-> "+e.getMessage()); 
    } 

    builder.setView(lvPersonal); 

    personalDialog = builder.create(); 

    personalBtn = (Button)act.findViewById(R.id.personalBtn); 
    personalBtn.setOnClickListener(this); 
    cropfieldBtn = (Button)act.findViewById(R.id.cropfieldBtn); 
    cropfieldBtn.setOnClickListener(this); 


    //se crean los listados de los items seleccionados 
    cropFieldSelected = new ArrayList<>(); 

    personalSelected = new ArrayList<>(); 

    tvCropFieldList = (TextView)act.findViewById(R.id.tvCropFieldList); 
    tvPersonalList = (TextView)act.findViewById(R.id.tvPersonalList); 


    //se pasan las listas con los campos y personal 
    //seleccionados a la actividad principal 
    act.setCcfList(cropFieldSelected); 
    act.setPerList(personalSelected); 


}// 

ответ

0

ViewPagers держать:

Ваша текущая вкладка & 1 вкладка либо сторону в памяти

Итак, когда вы переключаетесь между 1 и 2, ничего не происходит под капотом - это как они просто быть скрытый/показанный.

Использование setOffscreenPageLimit()

+0

я читал, что, но им не использовать ViewPager, только tabhost, и я игнорировать, если tabhost реализует ViewPager и как его получить, –

Смежные вопросы