PDA

Ver la Versión Completa : Problema navigation drawer


Manu14s
17/01/14, 12:32:02
Buenas el caso que he descargado el codigo de ejemplo de un curso de sgoliver sobre navigation drawer, y me crea
un error en el setOnItemClick:
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {

Fragment fragment = null;

switch (position) {
case 0:
fragment = new Fragment1();------------>Aqui me da error a partir del =
break;
case 1:
fragment = new Fragment2();------------>Aqui me da error a partir del =
break;
case 2:
fragment = new Fragment3();------------>Aqui me da error a partir del =
break;
}

FragmentManager fragmentManager =
getSupportFragmentManager();------------>Aqui me da error :Type mismatch: cannot convert from android.support.v4.app.FragmentManager to android.app.FragmentManager


He importado todo, le he dado a clean, he cerrado eclipse,lo he vuelto a abrir...En libs esta android-support-v4.jar
Ya no se que mas hacer, a er si alguien puede ayudarme porque ya me estoy volviendo loco..
pego el codigo completo:

package net.sgoliver.android.navdrawer;

import android.app.Fragment;
import android.app.FragmentManager;
import android.content.res.Configuration;
import android.os.Bundle;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.app.ActivityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class MainActivity extends ActionBarActivity {

private String[] opcionesMenu;
private DrawerLayout drawerLayout;
private ListView drawerList;
private ActionBarDrawerToggle drawerToggle;

private CharSequence tituloSeccion;
private CharSequence tituloApp;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

opcionesMenu = new String[] {"Opción 1", "Opción 2", "Opción 3"};
drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
drawerList = (ListView) findViewById(R.id.left_drawer);

drawerList.setAdapter(new ArrayAdapter<String>(
getSupportActionBar().getThemedContext(),
android.R.layout.simple_list_item_1, opcionesMenu));

drawerList.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {

Fragment fragment = null;

switch (position) {
case 0:
fragment = new Fragment1();
break;
case 1:
fragment = new Fragment2();
break;
case 2:
fragment = new Fragment3();
break;
}

FragmentManager fragmentManager =
getSupportFragmentManager();

fragmentManager.beginTransaction()
.replace(R.id.content_frame, fragment)
.commit();

drawerList.setItemChecked(position, true);

tituloSeccion = opcionesMenu[position];
getSupportActionBar().setTitle(tituloSeccion);

drawerLayout.closeDrawer(drawerList);
}
});

tituloSeccion = getTitle();
tituloApp = getTitle();

drawerToggle = new ActionBarDrawerToggle(this,
drawerLayout,
R.drawable.ic_navigation_drawer,
R.string.drawer_open,
R.string.drawer_close) {

public void onDrawerClosed(View view) {
getSupportActionBar().setTitle(tituloSeccion);
ActivityCompat.invalidateOptionsMenu(MainActivity. this);
}

public void onDrawerOpened(View drawerView) {
getSupportActionBar().setTitle(tituloApp);
ActivityCompat.invalidateOptionsMenu(MainActivity. this);
}
};

drawerLayout.setDrawerListener(drawerToggle);

getSupportActionBar().setDisplayHomeAsUpEnabled(tr ue);
getSupportActionBar().setHomeButtonEnabled(true);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.main, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

if (drawerToggle.onOptionsItemSelected(item)) {
return true;
}

switch(item.getItemId())
{
case R.id.action_settings:
Toast.makeText(this, "Settings", Toast.LENGTH_SHORT).show();;
break;
case R.id.action_search:
Toast.makeText(this, "Search", Toast.LENGTH_SHORT).show();
break;
default:
return super.onOptionsItemSelected(item);
}

return true;
}

@Override
public boolean onPrepareOptionsMenu(Menu menu) {

boolean menuAbierto = drawerLayout.isDrawerOpen(drawerList);

if(menuAbierto)
menu.findItem(R.id.action_search).setVisible(false );
else
menu.findItem(R.id.action_search).setVisible(true) ;

return super.onPrepareOptionsMenu(menu);
}

@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
drawerToggle.syncState();
}

@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
drawerToggle.onConfigurationChanged(newConfig);
}
}



GRACIAS !!!!

Manu14s
17/01/14, 12:52:40
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {

android.support.v4.app.Fragment fragment = null; ---->Añadido

switch (position) {
case 0:
fragment = new Fragment1();
break;
case 1:
fragment = new Fragment2();
break;
case 2:
fragment = new Fragment3();
break;
}

android.support.v4.app.FragmentManager fragmentManager = -->añadido
getSupportFragmentManager();

fragmentManager.beginTransaction()
.replace(R.id.content_frame, fragment)
.commit();

drawerList.setItemChecked(position, true);

tituloSeccion = opcionesMenu[position];
getSupportActionBar().setTitle(tituloSeccion);

drawerLayout.closeDrawer(drawerList);
}
});

sgolivernet
17/01/14, 14:43:28
Hola Manu,

debes haber tenido algún problemilla al importar el código, porque si miras el código de mi ejemplo en GitHub (https://github.com/sgolivernet/curso-android-src/blob/develop/android-navigationdrawer/src/net/sgoliver/android/navdrawer/MainActivity.java) verás que los import que hace son:

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;

y no los que indicas en tu código:

import android.app.Fragment;
import android.app.FragmentManager;

Saludos.