J'ai 3 tabfragments attachés à un tabhost, quand je mets des données dans un textview puis je sélectionne un autre onglet, les données du premier onglet sont effacées, mais je me rends compte que quand je sélectionnez un onglet que le fragment recharge.tabfragment est rechargement chaque fois que je sélectionne l'onglet
Ma question est comment puis-je sélectionner un onglet sans recharger son contenu? Les valeurs de textview sont effacées lorsque je sélectionne le même onglet après avoir sélectionné un autre onglet.
Activité principale où je créé tous les onglets
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);
}
}//
premier onglet,
@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 (position); // Log.d ("lvpersonal", "cliquez sur l'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);
}//
j'ai lu, mais je ne suis pas en utilisant ViewPager, seulement tabhost, et j'ignore si tabhost met en œuvre viewPager et comment l'obtenir, –