Estoy intentando crear una aplicación para tabletas que tiene una pantalla principal con tres fragmentos, cada uno con una lista. Me gustaría habilitar los menús contextuales para cada lista, pero cada vez que intento obtener un programa inesperado, pare y fuerce el cierre.Menú de contexto de un ListFragment
siguiente es el código XML y relevante que funciona y me da mis tres fragmentos deseados con listviews en cada uno, antes de tratar y añadir el menú contextual:
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="3dp">
<fragment class="cdc.ListFragment.Fragment1"
android:id="@+id/fragment1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
<fragment class="cdc.ListFragment.Fragment2"
android:id="@+id/fragment2"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
<fragment class="cdc.ListFragment.Fragment3"
android:id="@+id/fragment3"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
</LinearLayout>
fragment1. xml (los otros dos son similares)
<TextView
android:id="@+id/txtHeader1"
android:layout_width="fill_parent"
android:layout_height="30dp"
android:layout_gravity="center"
android:gravity="center"
android:text="@string/machines_header"
android:textColor="#00ccff"
android:background="#ff23cf"
android:textSize="25dp" />
<ListView
android:id="@id/android:list"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:drawSelectorOnTop="false"
android:textSize="12dp" />
<Button
android:id="@+id/Button01"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:minHeight="25dp"
android:text="@string/menu_add_machine"
android:textSize="15dp" >
</Button>
</LinearLayout>
ListFragment.java
import android.app.Activity;
import android.os.Bundle;
public class ListFragmentExampleActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
Fragment1.java (los otros dos son similares)
import android.app.ListFragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
public class Fragment1 extends ListFragment {
String[] presidents = { "Dwight D. Eisenhower", "John F. Kennedy",
"Lyndon B. Johnson", "Richard Nixon", "Gerald Ford",
"Jimmy Carter", "Ronald Reagan", "George H. W. Bush",
"Bill Clinton", "George W. Bush", "Barack Obama" };
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment1, container, false);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setListAdapter(new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_1, presidents));
}
}
De acuerdo con todo lo que he leído, yo debería ser capaz de simplemente añadir
registerForContextMenu(getListView());
al método onCreate en fragment1. java y agrega el código de menú apropiado. Sin embargo, en el momento en que lo agregue y trate de ejecutarlo, obtengo el bloqueo/bloqueo antes mencionado.
¿Alguien tiene alguna sugerencia/ayuda para esta situación?
Wow ... así de simple. :) ¡Gracias! – Barak