carlesqf
19/01/15, 09:41:08
Buenos días.
Me he metido en serio con todo esto de los fragment y cada día me encuentro con problemas nuevos.
El último está relacionado a la navegación entre fragmentos.
Todos ya conocereis que uno de los usos más normales para los fragmentos consiste en tener dos (A y B), situados en dos actividades diferentes. En A se ve el equivalente al índice de un libro. Escojo una de las entradas y el capítulo correspondiente aparece en B.
Esto funciona perfectamente.
Lo que yo quiero ahora es volver a A sin tener que usar los botones del teléfono, sino con las opciones del menú al que hago referencia en el título del mensaje.
Y no he conseguido que aparezca. Y he probado todo lo que he encontrado buscando por internet.
Anexo a continuación el código de la actividad B, el fragmento B, y el archivo del menú.
Espero que me digais que falla:
Activity B (PantallaContingutCapitols):
package com.carlesqf.laguerra;
import *.*;
public class PantallaContingutCapitols extends Activity{
SharedPreferences adrecafoto;
SharedPreferences.Editor NomEditor;
Intent anarfotos;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_contingutcapitols );
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransacton = fragmentManager.beginTransaction();
FragmentContingutCapitols FragContCap = new FragmentContingutCapitols();
Bundle b = new Bundle();
int posicio=getIntent().getIntExtra("position", 0);
b.putInt("position", posicio);
FragContCap.setArguments(b);
fragmentTransacton.add(R.id.container_contingut_ca pitols, FragContCap);
fragmentTransacton.commit();
// Declaració de "adrecafoto" i "NomEditor".
anarfotos=new Intent(this,PantallaFotos.class);
adrecafoto=getSharedPreferences("llocadrecafoto",0);
NomEditor=adrecafoto.edit();
}
}Fragment B(FragmentContingutCapitols):
package com.carlesqf.laguerra;
import *.*;
public class FragmentContingutCapitols extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v= inflater.inflate(R.layout.activity_contingutcapito ls, null);
// Getting the bundle object passed from "PantallaContingutCapitols"
Bundle b = getArguments();
String nomcap=LlistaCapitols.name[b.getInt("position")];
if (nomcap.contains("1700-1701 Les causes del conflicte:"))
v = inflater.inflate(R.layout.capitol1700, null);
else if ((nomcap.contains("1702 – Primers combats. Itàlia i front del Rin:")))
v = inflater.inflate(**, null);
return v;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
// Do something that differs the Activity's menu here
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.menu_fotos, menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_settings:
// do s.th.
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}"menu_fotos.xml":
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" >
<item
android:id="@+id/tancar_pantalla"
android:icon="@drawable/iconacasa"
android:title="opciotancar"
app:showAsAction="ifRoom" >
</item>
</menu>
Me he metido en serio con todo esto de los fragment y cada día me encuentro con problemas nuevos.
El último está relacionado a la navegación entre fragmentos.
Todos ya conocereis que uno de los usos más normales para los fragmentos consiste en tener dos (A y B), situados en dos actividades diferentes. En A se ve el equivalente al índice de un libro. Escojo una de las entradas y el capítulo correspondiente aparece en B.
Esto funciona perfectamente.
Lo que yo quiero ahora es volver a A sin tener que usar los botones del teléfono, sino con las opciones del menú al que hago referencia en el título del mensaje.
Y no he conseguido que aparezca. Y he probado todo lo que he encontrado buscando por internet.
Anexo a continuación el código de la actividad B, el fragmento B, y el archivo del menú.
Espero que me digais que falla:
Activity B (PantallaContingutCapitols):
package com.carlesqf.laguerra;
import *.*;
public class PantallaContingutCapitols extends Activity{
SharedPreferences adrecafoto;
SharedPreferences.Editor NomEditor;
Intent anarfotos;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_contingutcapitols );
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransacton = fragmentManager.beginTransaction();
FragmentContingutCapitols FragContCap = new FragmentContingutCapitols();
Bundle b = new Bundle();
int posicio=getIntent().getIntExtra("position", 0);
b.putInt("position", posicio);
FragContCap.setArguments(b);
fragmentTransacton.add(R.id.container_contingut_ca pitols, FragContCap);
fragmentTransacton.commit();
// Declaració de "adrecafoto" i "NomEditor".
anarfotos=new Intent(this,PantallaFotos.class);
adrecafoto=getSharedPreferences("llocadrecafoto",0);
NomEditor=adrecafoto.edit();
}
}Fragment B(FragmentContingutCapitols):
package com.carlesqf.laguerra;
import *.*;
public class FragmentContingutCapitols extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v= inflater.inflate(R.layout.activity_contingutcapito ls, null);
// Getting the bundle object passed from "PantallaContingutCapitols"
Bundle b = getArguments();
String nomcap=LlistaCapitols.name[b.getInt("position")];
if (nomcap.contains("1700-1701 Les causes del conflicte:"))
v = inflater.inflate(R.layout.capitol1700, null);
else if ((nomcap.contains("1702 – Primers combats. Itàlia i front del Rin:")))
v = inflater.inflate(**, null);
return v;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
// Do something that differs the Activity's menu here
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.menu_fotos, menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_settings:
// do s.th.
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}"menu_fotos.xml":
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" >
<item
android:id="@+id/tancar_pantalla"
android:icon="@drawable/iconacasa"
android:title="opciotancar"
app:showAsAction="ifRoom" >
</item>
</menu>