Cajón de navegación OnItemClickListener

Estoy haciendo una aplicación del ejemplo de desarrolladores de Android con el cajón de navegación. Hice los artículos pero no sé cómo puedo abrir la nueva actividad de cada uno de los artículos alistados.

Esta es la principalActividad:

public class MainActivity extends Activity { private DrawerLayout mDrawerLayout; private ListView mDrawerList; private ActionBarDrawerToggle mDrawerToggle; private CharSequence mDrawerTitle; private CharSequence mTitle; private String[] mGalaxyTitles; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTitle = mDrawerTitle = getTitle(); mGalaxyTitles = getResources().getStringArray(R.array.Galaxys_array); mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); mDrawerList = (ListView) findViewById(R.id.left_drawer); mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START); mDrawerList.setAdapter(new ArrayAdapter<String>(this, R.layout.drawer_list_item, mGalaxyTitles)); mDrawerList.setOnItemClickListener(new DrawerItemClickListener()); getActionBar().setDisplayHomeAsUpEnabled(true); getActionBar().setHomeButtonEnabled(true); mDrawerToggle = new ActionBarDrawerToggle( this, mDrawerLayout, R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_close ) { public void onDrawerClosed(View view) { getActionBar().setTitle(mTitle); invalidateOptionsMenu(); } public void onDrawerOpened(View drawerView) { getActionBar().setTitle(mDrawerTitle); invalidateOptionsMenu(); } }; mDrawerLayout.setDrawerListener(mDrawerToggle); if (savedInstanceState == null) { selectItem(0); } } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.main, menu); return super.onCreateOptionsMenu(menu); } @Override public boolean onPrepareOptionsMenu(Menu menu) { boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList); menu.findItem(R.id.action_websearch).setVisible(!drawerOpen); return super.onPrepareOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { if (mDrawerToggle.onOptionsItemSelected(item)) { return true; } switch(item.getItemId()) { case R.id.action_websearch: Intent intent = new Intent(Intent.ACTION_WEB_SEARCH); intent.putExtra(SearchManager.QUERY, getActionBar().getTitle()); if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } else { Toast.makeText(this, R.string.app_not_available, Toast.LENGTH_LONG).show(); } return true; default: return super.onOptionsItemSelected(item); } } private class DrawerItemClickListener implements ListView.OnItemClickListener { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub } } public void onItemClick(AdapterView<?> parent, View view, int position, long id) { switch(position) { case 1: Intent a = new Intent(MainActivity.this, Page1.class); startActivity(a); break; case 2: Intent b = new Intent(MainActivity.this, Page2.class); startActivity(b); break; default: } } private void selectItem(int position) { Fragment fragment = new GalaxyFragment(); Bundle args = new Bundle(); args.putInt(GalaxyFragment.ARG_Galaxy_NUMBER, position); fragment.setArguments(args); FragmentManager fragmentManager = getFragmentManager(); fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit(); mDrawerList.setItemChecked(position, true); setTitle(mGalaxyTitles[position]); mDrawerLayout.closeDrawer(mDrawerList); } @Override public void setTitle(CharSequence title) { mTitle = title; getActionBar().setTitle(mTitle); } @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); mDrawerToggle.syncState(); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); mDrawerToggle.onConfigurationChanged(newConfig); } public static class GalaxyFragment extends Fragment { public static final String ARG_Galaxy_NUMBER = "Galaxy_number"; public GalaxyFragment() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_Galaxy, container, false); int i = getArguments().getInt(ARG_Galaxy_NUMBER); String Galaxy = getResources().getStringArray(R.array.Galaxys_array)[i]; int imageId = getResources().getIdentifier(Galaxy.toLowerCase(Locale.getDefault()), "drawable", getActivity().getPackageName()); ((ImageView) rootView.findViewById(R.id.image)).setImageResource(imageId); getActivity().setTitle(Galaxy); return rootView; } } } 

Y una lista de cajones.xml

 <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/text1" android:textIsSelectable="false" android:layout_width="match_parent" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceListItemSmall" android:gravity="center_vertical" android:paddingLeft="16dp" android:paddingRight="16dp" android:textColor="#fff" android:background="?android:attr/activatedBackgroundIndicator" android:minHeight="?android:attr/listPreferredItemHeightSmall"/> 

El clic en los elementos no llaman a otras actividades, ¿cuál es el error?

En lugar de su código:

 private void selectItem(int position) { Fragment fragment = new GalaxyFragment(); Bundle args = new Bundle(); args.putInt(GalaxyFragment.ARG_Galaxy_NUMBER, position); fragment.setArguments(args); FragmentManager fragmentManager = getFragmentManager(); fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit(); mDrawerList.setItemChecked(position, true); setTitle(mGalaxyTitles[position]); mDrawerLayout.closeDrawer(mDrawerList); } 

Utilice este código:

 private void selectItem(int position) { switch(position) { case 1: Intent a = new Intent(MainActivity.this, Activity1.class); startActivity(a); break; case 2: Intent b = new Intent(MainActivity.this, Activity2.class); startActivity(b); break; default: } } 

Y quitar esta parte: (No es necesario)

 public void onItemClick(AdapterView<?> parent, View view, int position, long id) { switch(position) { case 1: Intent a = new Intent(MainActivity.this, Page1.class); startActivity(a); break; case 2: Intent b = new Intent(MainActivity.this, Page2.class); startActivity(b); break; default: } } 

En lugar de utilizar las actividades sólo utilizar un fragmento y un gestor de fragmentos para la transición entre ellos

 switch(position) { case 1: Intent a = new Intent(Book.this, SecondActivity.class); startActivity(a); break; case 2: Intent b = new Intent(Book.this, ThirdActivity.class); startActivity(b); break; default: } 

En manifesto escribes este código:

 <activity android:name=".firstactivity" android:parentActivityName=".MainActivity"> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".MainActivity"/> </activity> 

Actividad principal:

 Intent i=new Intent(MainActivity.this,firstactivity.class); startActivity(i); 
  • Android: Detectar el botón ACTION_UP fuera del evento
  • Diferente método para establecer OnClickListener de un botón en Android
  • Android - Gridview con Custom BaseAdapter, crear onclicklistener
  • Android: onClickListener para relativelayout
  • ¿Cómo abrir una nueva actividad haciendo clic en un elemento de listview?
  • SetOnItemClickListener en ListView que afecta a varias filas
  • EditText campo es necesario antes de pasar a otra actividad
  • Usando un bucle para establecer los botones enclicklistener
  • OnItemClickListener y OnClickListener no funcionan para ListView
  • Parámetro de vista de Android para el método OnClickListener
  • Android - método setOnClickListener cómo funciona?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.