Este codigo trata sobre el uso de FragmantTAbHost.
Tengo una actividad principal que es una extends de FragmentActivity
Código PHP:
public class MainIngles extends FragmentActivity {
private FragmentTabHost tabhost;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.mainingles);
tabhost = (FragmentTabHost) findViewById(android.R.id.tabhost) ;
tabhost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);
tabhost.addTab(tabhost.newTabSpec("tab1").setIndicator("Ingles", getResources().getDrawable(R.drawable.ingles32x32)), tab1.class, null );
tabhost.addTab(tabhost.newTabSpec("tab2").setIndicator("Español", getResources().getDrawable(R.drawable.spain32x32)), tab2.class, null );
tabhost.addTab(tabhost.newTabSpec("anadiringles").setIndicator("Añadir",getResources().getDrawable(R.drawable.anadir32x32)), anadiringles.class, null);
}
}
Cada pestaña tab1, tab2 y anadiringles son clases extends de Fragment.
En esta clase el método onCreateView sustituye al onCreate
Código PHP:
public class tab1 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.tab1, container, false);
}
}
Código PHP:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ListView
android:id="@+id/listpalabras"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp" />
</LinearLayout>
Código PHP:
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/row"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TableRow>
<TextView
android:id="@+id/tvtextE"
android:textSize="20sp"
android:layout_width="120dp"
android:textStyle="bold" />
<TextView
android:id="@+id/tvtextI"
android:textSize="20sp"
android:textStyle="bold" />
</TableRow>
</TableLayout>
Código PHP:
@Override
public void onActivityCreated (Bundle state) {
super.onActivityCreated(state);
MostrarPalabrasIngles();
registerForContextMenu(lvNotas);
}
Con todo esto consigo un listado de dos columnas en la cual una es la palabra en ingles y al lado es castellano.
Estoy intentando que al hacer la pulsación prolongada sobre un item del listview sacar un menu contextual con un menu de editar borrar, etc.
El sacar el menu con las opciones que he definido en una array.xml de values no hay problema.
El problema viene que no consigo capturar el item.
Vi es siguiente código pero es para una clase que es una extends de ListActivity.
Código PHP:
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
if (v.getId() == android.R.id.list) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
@SuppressWarnings("unchecked")
HashMap<String, String> item = (HashMap<String, String>) this.getListAdapter().getItem(info.position);
menu.setHeaderTitle(item.get(ClientesColumns.NOMBRE) + " " + item.get(ClientesColumns.APELLIDOS));
String[] menuItems = getResources().getStringArray(R.array.listmenu);
for (int i = 0; i < menuItems.length; i++) {
menu.add(Menu.NONE, i, i, menuItems[i]);
}
}
}
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
@SuppressWarnings("unchecked")
HashMap<String, String> itm = (HashMap<String, String>) this.getListAdapter().getItem(info.position);
int menuItemIndex = item.getItemId();
switch (menuItemIndex) {
case 0:
showEditClientDialog(
Integer.parseInt(itm.get(ClientesColumns._ID)),
itm.get(ClientesColumns.NOMBRE),
itm.get(ClientesColumns.APELLIDOS),
itm.get(ClientesColumns.EDAD));
return true;
case 1:
showConfirmDialog(info.position);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
Un saludo.