Solucionado (ver solução)
Solucionado
(ver solução)
20
respostas

Erro ao iniciar impede de continuar os exercícios

Esta dando problemas ao iniciar o aplicativo, o que esta impedindo de continuar o curso, pois os demais exercícios dependem que esteja rodando. estou com muita dificuldade de descobrir o erro

02-12 15:01:34.126: W/dalvikvm(1062): threadid=1: thread exiting with uncaught exception (group=0xb3a22ba8)
02-12 15:01:34.136: E/AndroidRuntime(1062): FATAL EXCEPTION: main
02-12 15:01:34.136: E/AndroidRuntime(1062): Process: br.com.caelum.cadastro, PID: 1062
02-12 15:01:34.136: E/AndroidRuntime(1062): java.lang.RuntimeException: Unable to start activity ComponentInfo{br.com.caelum.cadastro/br.com.caelum.cadastro.ListaAlunosActivity}: java.lang.NullPointerException
02-12 15:01:34.136: E/AndroidRuntime(1062):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
02-12 15:01:34.136: E/AndroidRuntime(1062):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
02-12 15:01:34.136: E/AndroidRuntime(1062):     at android.app.ActivityThread.access$800(ActivityThread.java:135)
02-12 15:01:34.136: E/AndroidRuntime(1062):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
02-12 15:01:34.136: E/AndroidRuntime(1062):     at android.os.Handler.dispatchMessage(Handler.java:102)
02-12 15:01:34.136: E/AndroidRuntime(1062):     at android.os.Looper.loop(Looper.java:136)
02-12 15:01:34.136: E/AndroidRuntime(1062):     at android.app.ActivityThread.main(ActivityThread.java:5001)
02-12 15:01:34.136: E/AndroidRuntime(1062):     at java.lang.reflect.Method.invokeNative(Native Method)
02-12 15:01:34.136: E/AndroidRuntime(1062):     at java.lang.reflect.Method.invoke(Method.java:515)
02-12 15:01:34.136: E/AndroidRuntime(1062):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
02-12 15:01:34.136: E/AndroidRuntime(1062):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
02-12 15:01:34.136: E/AndroidRuntime(1062):     at dalvik.system.NativeStart.main(Native Method)
02-12 15:01:34.136: E/AndroidRuntime(1062): Caused by: java.lang.NullPointerException
02-12 15:01:34.136: E/AndroidRuntime(1062):     at android.app.Activity.registerForContextMenu(Activity.java:2911)
02-12 15:01:34.136: E/AndroidRuntime(1062):     at br.com.caelum.cadastro.ListaAlunosActivity.onCreate(ListaAlunosActivity.java:37)
02-12 15:01:34.136: E/AndroidRuntime(1062):     at android.app.Activity.performCreate(Activity.java:5231)
02-12 15:01:34.136: E/AndroidRuntime(1062):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
02-12 15:01:34.136: E/AndroidRuntime(1062):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
02-12 15:01:34.136: E/AndroidRuntime(1062):     ... 11 more
package br.com.caelum.cadastro;

import java.util.List;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MenuItem.OnMenuItemClickListener;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import br.com.caelum.cadastro.adapter.ListaAlunosAdapter;
import br.com.caelum.cadastro.dao.AlunoDAO;
import br.com.caelum.cadastro.modelo.Aluno;

public class ListaAlunosActivity extends Activity{

    private ListView listViewAlunos;
    private Aluno alunoSelecionado;

    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.item);

        //fazendo a ponte entre XML e Java, e o devido Cast
        listViewAlunos= (ListView) findViewById(R.id.lista);
        registerForContextMenu(listViewAlunos);


        Toast.makeText(ListaAlunosActivity.this,"Iniciou o aplicativo", Toast.LENGTH_LONG).show();


        listViewAlunos.setOnItemClickListener( new OnItemClickListener() 
        {

            @Override
            public void onItemClick(AdapterView<?> adapter, View view, int posicao,    long id) {

            Aluno alunoParaSerAlterado = (Aluno) adapter.getItemAtPosition(posicao);

            Intent edicao = new Intent(ListaAlunosActivity.this,FormularioActivity.class);
            //Enviando pelo PutExtra
            edicao.putExtra(Extras.ALUNO_SELECIONADO,alunoParaSerAlterado);
            startActivity(edicao);    


            }
        });

        listViewAlunos.setOnItemLongClickListener(new OnItemLongClickListener() 
        {    

            @Override
            public boolean onItemLongClick(AdapterView<?> adapter, View view, int posicao,    long id) 
            {
                //Toast.makeText(ListaAlunosActivity.this, "Aluno clicado: "+alunos[posicao], Toast.LENGTH_SHORT).show();

                alunoSelecionado = (Aluno) adapter.getItemAtPosition(posicao); 
                return false;                
            }
        });
    } // onCreate


    private void carregaLista(){
        AlunoDAO alunoDAO = new AlunoDAO(this);
        //pegar alunos do banco ou seja do DAO
        //getLista() tem um retorno do tipo List<Aluno> então temos que criar a variável desse tipo para receber o retorno

        List<Aluno> listAlunos=alunoDAO.getLista();

        if (listAlunos.isEmpty())
            Toast.makeText(ListaAlunosActivity.this,"Nenhum aluno cadastrado", Toast.LENGTH_LONG).show();


        //Criando o adpter para passar o array do Java para android
        //ArrayAdapter<Aluno> adapter = new ArrayAdapter<Aluno>(this,android.R.layout.simple_list_item_1, listAlunos);
        // Associar  o adpter criado para o LIstView

        ListaAlunosAdapter adapter = new ListaAlunosAdapter(this,listAlunos);

        listViewAlunos.setAdapter(adapter);


    }

    @Override
    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();
            this.carregaLista();
    }


    //Importando Menu XML
    @Override
    public boolean onCreateOptionsMenu(Menu menu) 
    {
        getMenuInflater().inflate(R.menu.menu_lista_alunos, menu);    
        return super.onCreateOptionsMenu(menu);
    }

    //Comportamento ao clicalr

    @Override
    public boolean onOptionsItemSelected(MenuItem item)

    {
        switch (item.getItemId()) 
        {
            case R.id.novo:
            Intent irParaFormulario = new Intent(this,FormularioActivity.class);
            startActivity(irParaFormulario);

            return false;

            case R.id.mapa:
                Intent intentMapa = new Intent(Intent.ACTION_VIEW);
                intentMapa.setData(Uri.parse("geo:0,0?z=14&q="+alunoSelecionado.getEndereco()));
                startActivity(intentMapa);

                return false;

            default:

        }
        return super.onOptionsItemSelected(item);
    }

// Menu suspenso

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {
        // criando menu programaticamente
        // Não esquecer de registrar a lista para ter um menu de contexto


         MenuItem ligar = menu.add(0,0,0,"Ligar");
        // Intent intentLigar = new Intent(Intent.ACTION_CALL);
         Intent intentLigar = new Intent(Intent.ACTION_DIAL);
         intentLigar.setData(Uri.parse("tel:"+alunoSelecionado.getTelefone()));
         ligar.setIntent(intentLigar);


        MenuItem SMS = menu.add("Enviar SMS");

        Intent intentSMS = new Intent(Intent.ACTION_VIEW);
        intentSMS.setData(Uri.parse("sms:"+alunoSelecionado.getTelefone()));
        intentSMS.putExtra("sms_body"," Olá sou o Douglas Raphael, retornarei a ligação assim que possível");
        SMS.setIntent(intentSMS);

    //    MenuItem mapa = menu.add("Achar no Mapa");
    /*    mapa.setOnMenuItemClickListener(new OnMenuItemClickListener() {

            @Override
            public boolean onMenuItemClick(MenuItem item) {
                Intent intentMapa = new Intent(Intent.ACTION_VIEW); intentMapa.setData(Uri.parse("geo:0,0?z=14&q="+alunoSelecionado.getEndereco())); 
                setIntent(intentMapa); 
                startActivity(intentMapa);
                return false;
            }
        });
        */

        MenuItem mapa = menu.add("Achar no Mapa");
        Intent intentMapa = new Intent(Intent.ACTION_VIEW); intentMapa.setData(Uri.parse("geo:0,0?z=14&q="+alunoSelecionado.getEndereco())); 
        mapa.setIntent(intentMapa); 



        MenuItem site = menu.add("Navegar no site");
        Intent intentSite = new Intent(Intent.ACTION_VIEW);
        String http = alunoSelecionado.getSite().startsWith("http://")?"":"http://";
        intentSite.setData(Uri.parse(http+alunoSelecionado.getSite()));
        site.setIntent(intentSite);





        MenuItem deletar = menu.add("Deletar");
        deletar.setOnMenuItemClickListener(new OnMenuItemClickListener() {

            @Override
            public boolean onMenuItemClick(MenuItem item) {
                AlunoDAO dao = new AlunoDAO(ListaAlunosActivity.this);
                dao.deletar(alunoSelecionado);
                dao.close();
                carregaLista();
                return false;
            }
        });

        MenuItem email = menu.add(0,5,0, "Enviar E-mail");
        Intent intentEmail = new Intent(Intent.ACTION_SEND);
        intentEmail.setType("message/rfc822"); 
        intentEmail.putExtra(Intent.EXTRA_EMAIL,
             new String[] { "caelum@caelum.com.br" });
        intentEmail.putExtra(Intent.EXTRA_SUBJECT, "Elogios do curso de android");
        intentEmail.putExtra(Intent.EXTRA_TEXT, "Este curso é ótimo!!!");
        email.setIntent(intentEmail);


            MenuItem emailOP = menu.add(0,5,0, "Enviar E-mail ,...");
        email.setOnMenuItemClickListener(new OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                Intent intentEmail = new Intent(Intent.ACTION_SEND);
                intentEmail.setType("message/rfc822"); 
                intentEmail.putExtra(Intent.EXTRA_EMAIL,
                     new String[] { "caelum@caelum.com.br" });
                intentEmail.putExtra(Intent.EXTRA_SUBJECT, "Elogios do curso de android");
                intentEmail.putExtra(Intent.EXTRA_TEXT, "Este curso é ótimo!!!");

                startActivity(Intent.createChooser(intentEmail, "Selecione a sua aplicação de email!"));
                return false;
            }  
        });

        /*
        MenuItem compartilhar = menu.add(0,5,0, "Compartilhar...");
        Intent intent = new Intent(Intent.ACTION_SEND);
        intent.setType("text/plain");
        intent.putExtra(Intent.EXTRA_SUBJECT, "assunto do que será compartilhado");
        intent.putExtra(Intent.EXTRA_TEXT, "texto do que será compartilhado");
        startActivity(Intent.createChooser(intent, "Escolha como compartilhar"));
    */

        super.onCreateContextMenu(menu, v, menuInfo);
    }


}
package br.com.caelum.cadastro;

import java.io.File;
import java.io.Serializable;

import br.com.caelum.cadastro.dao.AlunoDAO;
import br.com.caelum.cadastro.modelo.Aluno;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.RatingBar;
import android.widget.Toast;

public class FormularioActivity extends Activity{
    protected static final int BATER_FOTO = 123;
    //Vamos criar o FormularioHelper para facilitar o trabalho de extrair os dados do Aluno dos campos.

    FormularioHelper helper;
    private String localArquivoFoto;

    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.formulario);

        final Button btInserir = (Button) findViewById(R.id.botao);
         helper=new FormularioHelper(this);                

        final Aluno alunoParaSerAlterado = (Aluno)getIntent().getSerializableExtra(Extras.ALUNO_SELECIONADO);

        if (alunoParaSerAlterado!=null){
            helper.colocaAlunoNoFormulario(alunoParaSerAlterado);
            btInserir.setText("Alterar");
        } 


        Toast.makeText(this, "Aluno: "+alunoParaSerAlterado,Toast.LENGTH_SHORT).show();
        btInserir.setOnClickListener(new OnClickListener() 
        {

            @Override
            public void onClick(View v) 
            {

                // pegaAlunoDoFormulario() return 
                Aluno aluno=helper.pegaAlunoDoFormulario();
                AlunoDAO alunoDAO = new AlunoDAO(FormularioActivity.this);

                if(alunoParaSerAlterado !=null){
                    aluno.setId(alunoParaSerAlterado.getId());

                    alunoDAO.atualizar(aluno);
                }
                else{
                    alunoDAO.insere(aluno);        
                }
                alunoDAO.close();                
                Toast.makeText(FormularioActivity.this, "Objeto aluno criado",Toast.LENGTH_SHORT).show();

                finish();

            }
        });//Onclick

        ImageView foto = helper.getCampoFoto();

        foto.setOnClickListener(new OnClickListener() {


            @Override
            public void onClick(View arg0) {
                localArquivoFoto=getExternalFilesDir(null)+"/"+System.currentTimeMillis()+".jpg";

                File arquivo = new File(localArquivoFoto);
                Uri localFoto=Uri.fromFile(arquivo);

                Intent irParaCamera=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                irParaCamera.putExtra(MediaStore.EXTRA_OUTPUT, localFoto);
                startActivityForResult(irParaCamera,BATER_FOTO);


            }
        });
    }
     @Override
        protected void onActivityResult(int requestCode,
            int resultCode, Intent data) {

            if (requestCode == BATER_FOTO) {
                if (resultCode == Activity.RESULT_OK) {
                    helper.carregaImagem(this.localArquivoFoto);
                } else {
                    this.localArquivoFoto = null;
                }
            }
        }

}
package br.com.caelum.cadastro;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.RatingBar;
import br.com.caelum.cadastro.modelo.Aluno;

public class FormularioHelper {


    private EditText campoNome;
    private EditText campoEndereco;
    private EditText campoSite;
    private EditText campoTelefone;
    private RatingBar campoNota;
    private ImageView campoFoto;


    private Aluno aluno;


    //OnCreate, poderia fazer em outro método qualquer
    public FormularioHelper(FormularioActivity active) 
    {
        aluno=new Aluno();
            // Fazendo a "ponte" entre o Java e android
        campoNome = (EditText) active.findViewById(R.id.nome);
        campoEndereco = (EditText) active.findViewById(R.id.endereco);
        campoSite = (EditText) active.findViewById(R.id.site);
        campoTelefone = (EditText) active.findViewById(R.id.telefone);
        campoNota = (RatingBar) active.findViewById(R.id.nota);
        setCampoFoto((ImageView) active.findViewById(R.id.foto));


    }

    public Aluno pegaAlunoDoFormulario(){

        aluno.setNome(campoNome.getText().toString());
        aluno.setTelefone(campoTelefone.getText().toString());
        aluno.setEndereco(campoEndereco.getText().toString());
        aluno.setSite(campoSite.getText().toString());
        aluno.setNota(Double.valueOf(campoNota.getRating()));

        return aluno;

    }

    public void colocaAlunoNoFormulario(Aluno alunoParaSerAlterado) {
        campoNome.setText(alunoParaSerAlterado.getNome());
        campoSite.setText(alunoParaSerAlterado.getSite());
        campoEndereco.setText(alunoParaSerAlterado.getEndereco());
        campoNota.setRating(alunoParaSerAlterado.getNota().floatValue());
        campoTelefone.setText(alunoParaSerAlterado.getTelefone());
        if(alunoParaSerAlterado.getCaminhoFoto()!=null){
            this.carregaImagem(alunoParaSerAlterado.getCaminhoFoto());
        }


    }



    public void carregaImagem(String localArquivoFoto) {
        Bitmap imagemFoto = BitmapFactory.decodeFile(localArquivoFoto);
        Bitmap imagemFotoReduzida = Bitmap.createScaledBitmap(imagemFoto, 100, 100, true);

        aluno.setCaminhoFoto(localArquivoFoto);
        getCampoFoto().setImageBitmap(imagemFotoReduzida);

    }

    public ImageView getCampoFoto() {
        return campoFoto;
    }

    public void setCampoFoto(ImageView campoFoto) {
        this.campoFoto = campoFoto;
    }


}
public class AlunoDAO extends SQLiteOpenHelper {



    private static final String DATABASE = "NomeDoBanco";
    private static final int VERSAO = 6;
    private static final String TABELA="Alunos";

    public AlunoDAO(Context ctx) {
          super(ctx, DATABASE, null, VERSAO);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        String sql ="CREATE TABLE " + TABELA +
             " (id INTEGER PRIMARY KEY  , "
            + " nome TEXT UNIQUE NOT NULL, "
            + " telefone TEXT, "
            + " endereco TEXT, "
            + " site TEXT, "
            + " nota REAL, "
            + "caminhoFoto TEXT "
            + ");";

        db.execSQL(sql);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
        String sql ="DROP TABLE IF EXISTS "+ TABELA;
        db.execSQL(sql);
        onCreate(db);

    }

    public void insere(Aluno aluno) {
        ContentValues cv = new ContentValues();
    //    nome da coluna
        //cv.put("id", aluno.getId());
        cv.put("nome", aluno.getNome());
        cv.put("telefone", aluno.getTelefone());
        cv.put("endereco", aluno.getEndereco());
        cv.put("site", aluno.getSite());
        cv.put("nota", aluno.getNota());
        cv.put("caminhofoto", aluno.getCaminhoFoto());
        // Não esta recebendo o database para poder manipular

        getWritableDatabase().insert(TABELA, null, cv);

    }

    public List<Aluno> getLista() {

    List<Aluno> listaDeAlunos = new ArrayList<Aluno>();
    String sql ="Select * from " + TABELA + ";";
    //
    Cursor c = getReadableDatabase().rawQuery(sql, null);

    if(null != c)
    if(c.getCount() > 0)
    {
        while(c.moveToNext())
        {
            Aluno aluno = new Aluno();
            aluno.setId(c.getLong(c.getColumnIndex("id")));
            aluno.setNome(c.getString(c.getColumnIndex("nome")));
            aluno.setTelefone(c.getString(c.getColumnIndex("telefone")));
            aluno.setEndereco(c.getString(c.getColumnIndex("endereco")));
            aluno.setSite(c.getString(c.getColumnIndex("site")));
            aluno.setNota(c.getDouble(c.getColumnIndex("nota")));
            aluno.setCaminhoFoto(c.getString(c.getColumnIndex("caminhoFoto")));

            listaDeAlunos.add(aluno);               

        }
    }
        return listaDeAlunos;
    }

    public void deletar(Aluno aluno) {
        String[] args={aluno.getId().toString()};
        getWritableDatabase().delete("Alunos", "id=?", args);

    }

    public void atualizar(Aluno aluno) {
         ContentValues cv = new ContentValues();
    //    nome da coluna
        //cv.put("id", aluno.getId());
        cv.put("nome", aluno.getNome());
        cv.put("telefone", aluno.getTelefone());
        cv.put("endereco", aluno.getEndereco());
        cv.put("site", aluno.getSite());
        cv.put("nota", aluno.getNota());
        cv.put("caminhofoto", aluno.getCaminhoFoto());

        String[]args ={aluno.getId().toString()};
        getWritableDatabase().update("Alunos", cv, "id=?",args);

    }
}
public class Aluno implements Serializable {

    private Long id;
    private String nome;
    private String telefone;
    private String endereco;
    private String site;
    private String caminhoFoto;
    private Double nota;

    public String getNome() {
        return nome;
    }
    public void setNome(String nome) {
        this.nome = nome;
    }
    public String getTelefone() {
        return telefone;
    }
    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public Double getNota() {
        return nota;
    }
    public void setNota(Double nota) {
        this.nota = nota;
    }
    public String getEndereco() {
        return endereco;
    }
    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }
    public String getSite() {
        return site;
    }
    public void setSite(String site) {
        this.site = site;
    }
    public String getCaminhoFoto() {
        return caminhoFoto;
    }
    public void setCaminhoFoto(String caminhoFoto) {
        this.caminhoFoto = caminhoFoto;
    }
    @Override
    public String toString() {
        return id + "." + nome;
    }


}
<?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="horizontal" 
    android:background="@color/linha_impar"
    >



    <ImageView android:id="@+id/foto"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="5dp"
        android:background="@color/borda_imagem"
        />

    <TextView android:id="@+id/nome"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"

          />



</LinearLayout>
public class ListaAlunosAdapter extends BaseAdapter {

    private final List<Aluno> listAlunos;
    private Activity activity;

    public ListaAlunosAdapter(Activity activity,List<Aluno> listAlunos) {
        this.listAlunos = listAlunos;
        this.activity=activity;        
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return listAlunos.size();
    }

    @Override
    public Object getItem(int posicao) {

        return listAlunos.get(posicao);
    }

    @Override
    public long getItemId(int posicao) {
        // TODO Auto-generated method stub
        return listAlunos.get(posicao).getId();
    }

    @Override
    public View getView(int posicao, View arg1, ViewGroup arg2) {

        Aluno aluno = listAlunos.get(posicao);
        View view = activity.getLayoutInflater().inflate(br.com.caelum.cadastro.R.layout.item, null);

        if (posicao % 2 == 0) {
            view.setBackgroundColor(activity.getResources().
                getColor(br.com.caelum.cadastro.R.color.linha_par));
        } 



        Bitmap bm; 

        TextView nome = (TextView) view.findViewById(br.com.caelum.cadastro.R.id.nome);
        nome.setText(aluno.toString());



        if (aluno.getCaminhoFoto() != null) {
            bm = BitmapFactory.decodeFile(aluno.getCaminhoFoto());
        } 
        else 
        {
            bm = BitmapFactory.decodeResource(activity.getResources(),br.com.caelum.cadastro.R.drawable.ic_no_image);
        }

        bm = Bitmap.createScaledBitmap(bm, 100, 100, true);

        ImageView foto =(ImageView) view.findViewById(br.com.caelum.cadastro.R.id.foto);
        foto.setImageBitmap(bm);
        return view;
    }

}
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="borda_imagem">#BABABA</color>
    <color name="linha_par">#33FFFF</color>
    <color name="linha_impar">#96FAFA</color>
</resources>
public class SMSReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "Chegou um SMS!!!", Toast.LENGTH_LONG).show();

    }

}
20 respostas

Seu código está confuso. Para postar aqui coloca entre para abrir e no final para fechar que melhora a legibilidade do código, mas mesmo assim lendo o erro da aplicação o mesmo esta dizendo que ao retornar a sua lista a mesma está nula.

Unable to start activity ComponentInfo{br.com.caelum.cadastro/br.com.caelum.cadastro.ListaAlunosActivity}: java.lang.NullPointerException `

Você criou uma lista de itens antes de coloca-lá no adapter tipo assim:

 String[] alunos = {"Daniel", "Ronaldo", "Jeferson", "Felipe"};

e depois usando aqui assim:

ListView listView = (ListView) findViewById(R.id.lista_aluno_idListView);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, alunos);
        listView.setAdapter(adapter);

????

Não , essa parte já passou faz tempo, ja esta pegando do banco de dados, e usando uma classe Alunos Adapter

mudei a versão, e recriou as tabelas e limpou as tabelas.

Ainda não encontrei o erro

Como lhe disse, seu objeto está vazio. Se está vindo do banco de dados deve ter algum problema na conexão. O erro é um objeto vazio ao carregar seu objeto no adapter. Cola só a parte que VC faz a conexão com o banco. Como VC faz. Para postar coloca três sinais desse( `) antes de seu código e depois, assim seu código aparecerá identado e formatado ficando melhor de se analisar.

public List getLista() {
List listaDeAlunos = new ArrayList(); String sql ="Select * from " + TABELA + ";"; // Cursor c = getReadableDatabase().rawQuery(sql, null);
if(null != c) if(c.getCount() > 0) { while(c.moveToNext()) { Aluno aluno = new Aluno(); aluno.setId(c.getLong(c.getColumnIndex("id"))); aluno.setNome(c.getString(c.getColumnIndex("nome"))); aluno.setTelefone(c.getString(c.getColumnIndex("telefone"))); aluno.setEndereco(c.getString(c.getColumnIndex("endereco"))); aluno.setSite(c.getString(c.getColumnIndex("site"))); aluno.setNota(c.getDouble(c.getColumnIndex("nota"))); aluno.setCaminhoFoto(c.getString(c.getColumnIndex("caminhoFoto")));
listaDeAlunos.add(aluno);
} } return listaDeAlunos; }

Olhando essa parte do teu Dao, vejo q VC verifica se o retorno está vazio não não trata no final do if com um else para se o mesmo não retornar valor a variável não retorne null.

Segue,

public class ListaAlunosActivity extends Activity{

    private ListView listViewAlunos;
    private Aluno alunoSelecionado;

    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.item);

        //fazendo a ponte entre XML e Java, e o devido Cast
        listViewAlunos= (ListView) findViewById(R.id.lista);
        registerForContextMenu(listViewAlunos);


        Toast.makeText(ListaAlunosActivity.this,"Iniciou o aplicativo", Toast.LENGTH_LONG).show();


        listViewAlunos.setOnItemClickListener( new OnItemClickListener() 
        {

            @Override
            public void onItemClick(AdapterView<?> adapter, View view, int posicao,    long id) {

            Aluno alunoParaSerAlterado = (Aluno) adapter.getItemAtPosition(posicao);

            Intent edicao = new Intent(ListaAlunosActivity.this,FormularioActivity.class);
            //Enviando pelo PutExtra
            edicao.putExtra(Extras.ALUNO_SELECIONADO,alunoParaSerAlterado);
            startActivity(edicao);    


            }
        });

        listViewAlunos.setOnItemLongClickListener(new OnItemLongClickListener() 
        {    

            @Override
            public boolean onItemLongClick(AdapterView<?> adapter, View view, int posicao,    long id) 
            {
                //Toast.makeText(ListaAlunosActivity.this, "Aluno clicado: "+alunos[posicao], Toast.LENGTH_SHORT).show();

                alunoSelecionado = (Aluno) adapter.getItemAtPosition(posicao); 
                return false;                
            }
        });
    } // onCreate


    private void carregaLista(){
        AlunoDAO alunoDAO = new AlunoDAO(this);


        List<Aluno> listAlunos=alunoDAO.getLista();

        if (listAlunos.isEmpty())
            Toast.makeText(ListaAlunosActivity.this,"Nenhum aluno cadastrado", Toast.LENGTH_LONG).show();


        ListaAlunosAdapter adapter = new ListaAlunosAdapter(this,listAlunos);

        listViewAlunos.setAdapter(adapter);


    }

    @Override
    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();
            this.carregaLista();
    }
public class AlunoDAO extends SQLiteOpenHelper {



    private static final String DATABASE = "NomeDoBanco";
    private static final int VERSAO = 6;
    private static final String TABELA="Alunos";

    public AlunoDAO(Context ctx) {
          super(ctx, DATABASE, null, VERSAO);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        String sql ="CREATE TABLE " + TABELA +
             " (id INTEGER PRIMARY KEY  , "
            + " nome TEXT UNIQUE NOT NULL, "
            + " telefone TEXT, "
            + " endereco TEXT, "
            + " site TEXT, "
            + " nota REAL, "
            + "caminhoFoto TEXT "
            + ");";

        db.execSQL(sql);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
        String sql ="DROP TABLE IF EXISTS "+ TABELA;
        db.execSQL(sql);
        onCreate(db);

    }

    public void insere(Aluno aluno) {
        ContentValues cv = new ContentValues();
    //    nome da coluna
        //cv.put("id", aluno.getId());
        cv.put("nome", aluno.getNome());
        cv.put("telefone", aluno.getTelefone());
        cv.put("endereco", aluno.getEndereco());
        cv.put("site", aluno.getSite());
        cv.put("nota", aluno.getNota());
        cv.put("caminhofoto", aluno.getCaminhoFoto());
        // Não esta recebendo o database para poder manipular

        getWritableDatabase().insert(TABELA, null, cv);

    }

    public List<Aluno> getLista() {

    List<Aluno> listaDeAlunos = new ArrayList<Aluno>();
    String sql ="Select * from " + TABELA + ";";
    //
    Cursor c = getReadableDatabase().rawQuery(sql, null);

    if(null != c)
    if(c.getCount() > 0)
    {
        while(c.moveToNext())
        {
            Aluno aluno = new Aluno();
            aluno.setId(c.getLong(c.getColumnIndex("id")));
            aluno.setNome(c.getString(c.getColumnIndex("nome")));
            aluno.setTelefone(c.getString(c.getColumnIndex("telefone")));
            aluno.setEndereco(c.getString(c.getColumnIndex("endereco")));
            aluno.setSite(c.getString(c.getColumnIndex("site")));
            aluno.setNota(c.getDouble(c.getColumnIndex("nota")));
            aluno.setCaminhoFoto(c.getString(c.getColumnIndex("caminhoFoto")));

            listaDeAlunos.add(aluno);               

        }
    }
        return listaDeAlunos;
    }

    public void deletar(Aluno aluno) {
        String[] args={aluno.getId().toString()};
        getWritableDatabase().delete("Alunos", "id=?", args);

    }

    public void atualizar(Aluno aluno) {
         ContentValues cv = new ContentValues();
    //    nome da coluna
        //cv.put("id", aluno.getId());
        cv.put("nome", aluno.getNome());
        cv.put("telefone", aluno.getTelefone());
        cv.put("endereco", aluno.getEndereco());
        cv.put("site", aluno.getSite());
        cv.put("nota", aluno.getNota());
        cv.put("caminhofoto", aluno.getCaminhoFoto());

        String[]args ={aluno.getId().toString()};
        getWritableDatabase().update("Alunos", cv, "id=?",args);

    }
}

Se o cursor vir nulo eu retorno o que?

public List getLista() {
List listaDeAlunos = new ArrayList(); String sql ="Select * from " + TABELA + ";"; // Cursor c = getReadableDatabase().rawQuery(sql, null);
if(null != c) if(c.getCount() > 0) { while(c.moveToNext()) { Aluno aluno = new Aluno(); aluno.setId(c.getLong(c.getColumnIndex("id"))); aluno.setNome(c.getString(c.getColumnIndex("nome"))); aluno.setTelefone(c.getString(c.getColumnIndex("telefone"))); aluno.setEndereco(c.getString(c.getColumnIndex("endereco"))); aluno.setSite(c.getString(c.getColumnIndex("site"))); aluno.setNota(c.getDouble(c.getColumnIndex("nota"))); aluno.setCaminhoFoto(c.getString(c.getColumnIndex("caminhoFoto")));
listaDeAlunos.add(aluno);
} } return listaDeAlunos; }
public class ListaAlunosActivity extends Activity{

private ListView listViewAlunos; 
private Aluno alunoSelecionado;

    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.item);
        registerForContextMenu(listViewAlunos);

        Toast.makeText(ListaAlunosActivity.this, "Iniciou o aplicativo", Toast.LENGTH_LONG).show();

        listViewAlunos.setOnItemClickListener( new OnItemClickListener() {

                @Override public void onItemClick(AdapterView<?> adapter, View view, int posicao, long id) {

                    Aluno alunoParaSerAlterado = (Aluno) adapter.getItemAtPosition(posicao);
                    Intent edicao = new Intent(ListaAlunosActivity.this, FormularioActivity.class);                                                 edicao.putExtra(Extras.ALUNO_SELECIONADO, alunoParaSerAlterado); 
                    startActivity(edicao);

                } 
        });

        listViewAlunos.setOnItemLongClickListener(new OnItemLongClickListener() {

                @Override public boolean onItemLongClick(AdapterView<?> adapter, View view, int posicao, long id) { 

                        alunoSelecionado = (Aluno) adapter.getItemAtPosition(posicao); 
                        return false; 
                } 
        }); 
    }

    private void carregaLista(){ 

        AlunoDAO alunoDAO = new AlunoDAO(this);
        List listAlunos = alunoDAO.getLista();

        if (listAlunos.isEmpty())
                Toast.makeText(ListaAlunosActivity.this, "Nenhum aluno cadastrado", Toast.LENGTH_LONG).show();  

        ListaAlunosAdapter adapter = new ListaAlunosAdapter(this, listAlunos);
        listViewAlunos.setAdapter(adapter);

    }   

    @Override protected void onResume() { 

        // TODO Auto-generated method stub super.onResume(); 
        this.carregaLista(); 
    }
    public class AlunoDAO extends SQLiteOpenHelper {

        private static final String DATABASE = "NomeDoBanco"; 
        private static final int VERSAO = 6; 
        private static final String TABELA="Alunos";

        public AlunoDAO(Context ctx) { 
            super(ctx, DATABASE, null, VERSAO); // TODO Auto-generated constructor stub }

            @Override 
            public void onCreate(SQLiteDatabase db) { 
                // TODO Auto-generated method stub 
                String sql ="CREATE TABLE " + TABELA + " (id INTEGER PRIMARY KEY , " + " nome TEXT UNIQUE NOT NULL, " + " telefone TEXT, " + " endereco TEXT, " + " site TEXT, " + " nota REAL, " + "caminhoFoto TEXT " + ");";
                db.execSQL(sql); 
            }

            @Override 
            public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
            // TODO Auto-generated method stub 
                String sql ="DROP TABLE IF EXISTS "+ TABELA; 
                db.execSQL(sql); 
                onCreate(db);
            }

            public void insere(Aluno aluno) { 
                ContentValues cv = new ContentValues(); 
                // nome da coluna 
                //cv.put("id", aluno.getId()); 
                cv.put("nome", aluno.getNome()); 
                cv.put("telefone", aluno.getTelefone()); 
                cv.put("endereco", aluno.getEndereco()); 
                cv.put("site", aluno.getSite()); 
                cv.put("nota", aluno.getNota()); 
                cv.put("caminhofoto", aluno.getCaminhoFoto()); 
                // Não esta recebendo o database para poder manipular
                getWritableDatabase().insert(TABELA, null, cv);
            }

            public List getLista() {

                List listaDeAlunos = new ArrayList(); 
                    String sql ="Select * from " + TABELA + ";"; 
                    // Cursor c = getReadableDatabase().rawQuery(sql, null);

                if(null != c) if(c.getCount() > 0) { 
                    while(c.moveToNext()) { 
                        Aluno aluno = new Aluno(); 
                        aluno.setId(c.getLong(c.getColumnIndex("id")));                                                                                 aluno.setNome(c.getString(c.getColumnIndex("nome")));                                                                           aluno.setTelefone(c.getString(c.getColumnIndex("telefone")));                                                                   aluno.setEndereco(c.getString(c.getColumnIndex("endereco")));                                                                   aluno.setSite(c.getString(c.getColumnIndex("site")));                                                                           aluno.setNota(c.getDouble(c.getColumnIndex("nota")));                                                                           aluno.setCaminhoFoto(c.getString(c.getColumnIndex("caminhoFoto")));

                        listaDeAlunos.add(aluno);
                    } 
                } 
                return listaDeAlunos; 
            }

            public void deletar(Aluno aluno) { 
                String[] args={
                    aluno.getId().toString()
                }; 
                getWritableDatabase().delete("Alunos", "id=?", args);

            }

            public void atualizar(Aluno aluno) { 
                ContentValues cv = new ContentValues(); 
                // nome da coluna 
                //cv.put("id", aluno.getId()); 
                cv.put("nome", aluno.getNome()); 
                cv.put("telefone", aluno.getTelefone()); 
                cv.put("endereco", aluno.getEndereco()); 
                cv.put("site", aluno.getSite()); 
                cv.put("nota", aluno.getNota()); 
                cv.put("caminhofoto", aluno.getCaminhoFoto());

                String[]args ={aluno.getId().toString()}; 
                getWritableDatabase().update("Alunos", cv, "id=?",args);
            }
        }

Mano olhei seu código. Vou lhe pedir para fazer um teste, não estou afirmando que possa ser isso mas estou indo pela lógica.

O ciclo de vida de uma Activity começa com o onCreate e nesse onCreate pelo que percebo você usa o adapter que vai adaptar o resultado de seu banco de dados para uma view que exibirá numa lista. Seu adapter esta no onCreate e seu "this.carregaLista();" está no onResume que é o método chamado depois que tudo deu ok na criação de seu onCreate, onStart. Tenta colocar esse "this.carregaLista();" no onCreate antes de usar esse trecho aqui "listViewAlunos.setOnItemClickListener( new OnItemClickListener() {"

testa ai e me diz se o erro continua.

Copia esse código aqui do onCreate:

protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.item);
        registerForContextMenu(listViewAlunos);

        Toast.makeText(ListaAlunosActivity.this, "Iniciou o aplicativo", Toast.LENGTH_LONG).show();

    /*Coloquei antes de você usar a listViewAlunos porque pelo que entendi você esta preenchendo ela com seu resultado do banco de dados. Como colocou no onResume que é um metodo carregado depois do onCreate pode ser que seu listViewAlunos esteja nula ao carregar no onCreate. 
A mensagem de erro que apareceu foi que tua Activity tem algo nulo e imagino que possa ser isso. Não é certeza mas testa e vamos ver se funciona. */
    this.carregaLista(); 
        listViewAlunos.setOnItemClickListener( new OnItemClickListener() {

                @Override public void onItemClick(AdapterView<?> adapter, View view, int posicao, long id) {

                    Aluno alunoParaSerAlterado = (Aluno) adapter.getItemAtPosition(posicao);
                    Intent edicao = new Intent(ListaAlunosActivity.this, FormularioActivity.class);                                                 edicao.putExtra(Extras.ALUNO_SELECIONADO, alunoParaSerAlterado); 
                    startActivity(edicao);

                } 
        });

Ainda Mesmo erro

02-13 08:15:21.905: E/AndroidRuntime(1297): FATAL EXCEPTION: main
02-13 08:15:21.905: E/AndroidRuntime(1297): Process: br.com.caelum.cadastro, PID: 1297
02-13 08:15:21.905: E/AndroidRuntime(1297): java.lang.RuntimeException: Unable to start activity ComponentInfo{br.com.caelum.cadastro/br.com.caelum.cadastro.ListaAlunosActivity}: java.lang.NullPointerException
02-13 08:15:21.905: E/AndroidRuntime(1297):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
02-13 08:15:21.905: E/AndroidRuntime(1297):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
02-13 08:15:21.905: E/AndroidRuntime(1297):     at android.app.ActivityThread.access$800(ActivityThread.java:135)
02-13 08:15:21.905: E/AndroidRuntime(1297):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
02-13 08:15:21.905: E/AndroidRuntime(1297):     at android.os.Handler.dispatchMessage(Handler.java:102)
02-13 08:15:21.905: E/AndroidRuntime(1297):     at android.os.Looper.loop(Looper.java:136)
02-13 08:15:21.905: E/AndroidRuntime(1297):     at android.app.ActivityThread.main(ActivityThread.java:5001)
02-13 08:15:21.905: E/AndroidRuntime(1297):     at java.lang.reflect.Method.invokeNative(Native Method)
02-13 08:15:21.905: E/AndroidRuntime(1297):     at java.lang.reflect.Method.invoke(Method.java:515)
02-13 08:15:21.905: E/AndroidRuntime(1297):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)

Como retornar a lista vazia sem dar erro?

Douglas, tem lugar que você está declarando "caminhoFoto" e tem lugar que você está chamando "caminhofoto". O banco faz diferenciação disso. Troca tudo para um padão, depois troque a versão do banco pra que ele atualize.

Acho que pode dar certo.

Alterei e mudei a versão do banco e nada :(

coloquei para carregar a lista no onCreate tb, não funcionou.

comentei o carrega lista do OnResume e OnCreate para testar, deu mesmo erro

02-13 09:00:15.345: W/dalvikvm(1704): threadid=1: thread exiting with uncaught exception (group=0xb3ac1ba8)
02-13 09:00:15.365: E/AndroidRuntime(1704): FATAL EXCEPTION: main
02-13 09:00:15.365: E/AndroidRuntime(1704): Process: br.com.caelum.cadastro, PID: 1704
02-13 09:00:15.365: E/AndroidRuntime(1704): java.lang.RuntimeException: Unable to start activity ComponentInfo{br.com.caelum.cadastro/br.com.caelum.cadastro.ListaAlunosActivity}: java.lang.NullPointerException
02-13 09:00:15.365: E/AndroidRuntime(1704):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
02-13 09:00:15.365: E/AndroidRuntime(1704):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
02-13 09:00:15.365: E/AndroidRuntime(1704):     at android.app.ActivityThread.access$800(ActivityThread.java:135)
02-13 09:00:15.365: E/AndroidRuntime(1704):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
02-13 09:00:15.365: E/AndroidRuntime(1704):     at android.os.Handler.dispatchMessage(Handler.java:102)
02-13 09:00:15.365: E/AndroidRuntime(1704):     at android.os.Looper.loop(Looper.java:136)
02-13 09:00:15.365: E/AndroidRuntime(1704):     at android.app.ActivityThread.main(ActivityThread.java:5001)
02-13 09:00:15.365: E/AndroidRuntime(1704):     at java.lang.reflect.Method.invokeNative(Native Method)
02-13 09:00:15.365: E/AndroidRuntime(1704):     at java.lang.reflect.Method.invoke(Method.java:515)
02-13 09:00:15.365: E/AndroidRuntime(1704):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
02-13 09:00:15.365: E/AndroidRuntime(1704):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
02-13 09:00:15.365: E/AndroidRuntime(1704):     at dalvik.system.NativeStart.main(Native Method)
02-13 09:00:15.365: E/AndroidRuntime(1704): Caused by: java.lang.NullPointerException
02-13 09:00:15.365: E/AndroidRuntime(1704):     at android.app.Activity.registerForContextMenu(Activity.java:2911)
02-13 09:00:15.365: E/AndroidRuntime(1704):     at br.com.caelum.cadastro.ListaAlunosActivity.onCreate(ListaAlunosActivity.java:37)
02-13 09:00:15.365: E/AndroidRuntime(1704):     at android.app.Activity.performCreate(Activity.java:5231)
02-13 09:00:15.365: E/AndroidRuntime(1704):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
02-13 09:00:15.365: E/AndroidRuntime(1704):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
02-13 09:00:15.365: E/AndroidRuntime(1704):     ... 11 more

Opa, melhorou essa mesagem de erro. Pelo menos ela diz a linha da tua Activity q esta dando o erro. Qual o código fica aqui:

02-13 09:00:15.365: E/AndroidRuntime(1704):     at br.com.caelum.cadastro.ListaAlunosActivity.onCreate(ListaAlunosActivity.java:37)

Linha 37?

35. List<Aluno> listAlunos=alunoDAO.getLista();
36.        
37.        if (listAlunos.isEmpty())
            Toast.makeText(ListaAlunosActivity.this,"Nenhum aluno cadastrado", Toast.LENGTH_LONG).show();

Novas alterações:

02-13 09:38:42.675: E/AndroidRuntime(1842): Process: br.com.caelum.cadastro, PID: 1842
02-13 09:38:42.675: E/AndroidRuntime(1842): java.lang.RuntimeException: Unable to start activity ComponentInfo{br.com.caelum.cadastro/br.com.caelum.cadastro.ListaAlunosActivity}: java.lang.NullPointerException
02-13 09:38:42.675: E/AndroidRuntime(1842):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
02-13 09:38:42.675: E/AndroidRuntime(1842):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
02-13 09:38:42.675: E/AndroidRuntime(1842):     at android.app.ActivityThread.access$800(ActivityThread.java:135)
02-13 09:38:42.675: E/AndroidRuntime(1842):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
02-13 09:38:42.675: E/AndroidRuntime(1842):     at android.os.Handler.dispatchMessage(Handler.java:102)
02-13 09:38:42.675: E/AndroidRuntime(1842):     at android.os.Looper.loop(Looper.java:136)
02-13 09:38:42.675: E/AndroidRuntime(1842):     at android.app.ActivityThread.main(ActivityThread.java:5001)
02-13 09:38:42.675: E/AndroidRuntime(1842):     at java.lang.reflect.Method.invokeNative(Native Method)
02-13 09:38:42.675: E/AndroidRuntime(1842):     at java.lang.reflect.Method.invoke(Method.java:515)
02-13 09:38:42.675: E/AndroidRuntime(1842):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
02-13 09:38:42.675: E/AndroidRuntime(1842):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
02-13 09:38:42.675: E/AndroidRuntime(1842):     at dalvik.system.NativeStart.main(Native Method)
02-13 09:38:42.675: E/AndroidRuntime(1842): Caused by: java.lang.NullPointerException
02-13 09:38:42.675: E/AndroidRuntime(1842):     at android.app.Activity.registerForContextMenu(Activity.java:2911)
02-13 09:38:42.675: E/AndroidRuntime(1842):     at br.com.caelum.cadastro.ListaAlunosActivity.onCreate(ListaAlunosActivity.java:59)
02-13 09:38:42.675: E/AndroidRuntime(1842):     at android.app.Activity.performCreate(Activity.java:5231)
02-13 09:38:42.675: E/AndroidRuntime(1842):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
02-13 09:38:42.675: E/AndroidRuntime(1842):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
02-13 09:38:42.675: E/AndroidRuntime(1842):     ... 11 more
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.item);

        //fazendo a ponte entre XML e Java, e o devido Cast
        listViewAlunos= (ListView) findViewById(R.id.lista);
57..        registerForContextMenu(listViewAlunos);

Pô Douglas confirma para mim esse código do seu Dao:

 public List getLista() {

                List listaDeAlunos = new ArrayList(); 
                String sql ="Select * from " + TABELA + ";"; 

        /* esse teu cursor esta comentado?*/
                //Cursor c = getReadableDatabase().rawQuery(sql, null);

        /* aqui você verifica se ele foi preenchido só que se você comentou a variavel "c" a mesma vai dar erro porque o programa não encontrará essa variavel e a mesma dará um nullException*/

                if(null != c) if(c.getCount() > 0) { 
                    while(c.moveToNext()) { 
                        Aluno aluno = new Aluno(); 
                        aluno.setId(c.getLong(c.getColumnIndex("id")));                                                                                 aluno.setNome(c.getString(c.getColumnIndex("nome")));                                                                           aluno.setTelefone(c.getString(c.getColumnIndex("telefone")));                                                                   aluno.setEndereco(c.getString(c.getColumnIndex("endereco")));                                                                   aluno.setSite(c.getString(c.getColumnIndex("site")));                                                                           aluno.setNota(c.getDouble(c.getColumnIndex("nota")));                                                                           aluno.setCaminhoFoto(c.getString(c.getColumnIndex("caminhoFoto")));

                        listaDeAlunos.add(aluno);
                    } 
                }                 
                return listaDeAlunos; 
            }

não estava comentado...

    public List<Aluno> getLista() {

    List<Aluno> listaDeAlunos = new ArrayList<Aluno>();
    String sql ="Select * from " + TABELA + ";";

    Cursor c = getReadableDatabase().rawQuery(sql, null);

    if(null != c)
        if(c.getCount() > 0)
        {
            while(c.moveToNext())
            {
                Aluno aluno = new Aluno();
                aluno.setId(c.getLong(c.getColumnIndex("id")));
                aluno.setNome(c.getString(c.getColumnIndex("nome")));
                aluno.setTelefone(c.getString(c.getColumnIndex("telefone")));
                aluno.setEndereco(c.getString(c.getColumnIndex("endereco")));
                aluno.setSite(c.getString(c.getColumnIndex("site")));
                aluno.setNota(c.getDouble(c.getColumnIndex("nota")));
                aluno.setCaminhoFoto(c.getString(c.getColumnIndex("caminhoFoto")));

                listaDeAlunos.add(aluno);               

            }
        }



    return listaDeAlunos;    

    }

Então coloca no final desse fecha chaves "}" antes do "return listaDeAlunos; "

else{
    listaDeAlunos = new ArrayList<Aluno>();
}

e vê se para de dar nullPonterException.

É que você colocou que se diferente de null ele não entrará no preenchimento de sua lista, mas como voçe certamente esta recebendo um valor null desse seu cursor, a condição não essa sendo atendida if(null != c) if(c.getCount() > 0) { e então vai direto como null para o retorno. Creio que usando o código que lhe passei else{ listaDeAlunos = new ArrayList(); } o mesmo irá parar de retornar um valor nulo. Pelo menos assim espero. Se ainda assim continuar dando problema de valor nulo você pode tentar colocar dentro desse else um aluno estatico mesmo e passar para sua lista só para testar ou usar o Debug do Android Studio para você identificar em que ponta esta sendo passado essa variavel nula.

dando erro no la ninha 62

registerForContextMenu(listViewAlunos);

tem código fonte da dessa Modulo?

02-13 11:42:40.865: E/AndroidRuntime(1239): FATAL EXCEPTION: main
02-13 11:42:40.865: E/AndroidRuntime(1239): Process: br.com.caelum.cadastro, PID: 1239
02-13 11:42:40.865: E/AndroidRuntime(1239): java.lang.RuntimeException: Unable to start activity ComponentInfo{br.com.caelum.cadastro/br.com.caelum.cadastro.ListaAlunosActivity}: java.lang.NullPointerException
02-13 11:42:40.865: E/AndroidRuntime(1239):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
02-13 11:42:40.865: E/AndroidRuntime(1239):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
02-13 11:42:40.865: E/AndroidRuntime(1239):     at android.app.ActivityThread.access$800(ActivityThread.java:135)
02-13 11:42:40.865: E/AndroidRuntime(1239):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
02-13 11:42:40.865: E/AndroidRuntime(1239):     at android.os.Handler.dispatchMessage(Handler.java:102)
02-13 11:42:40.865: E/AndroidRuntime(1239):     at android.os.Looper.loop(Looper.java:136)
02-13 11:42:40.865: E/AndroidRuntime(1239):     at android.app.ActivityThread.main(ActivityThread.java:5001)
02-13 11:42:40.865: E/AndroidRuntime(1239):     at java.lang.reflect.Method.invokeNative(Native Method)
02-13 11:42:40.865: E/AndroidRuntime(1239):     at java.lang.reflect.Method.invoke(Method.java:515)
02-13 11:42:40.865: E/AndroidRuntime(1239):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
02-13 11:42:40.865: E/AndroidRuntime(1239):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
02-13 11:42:40.865: E/AndroidRuntime(1239):     at dalvik.system.NativeStart.main(Native Method)
02-13 11:42:40.865: E/AndroidRuntime(1239): Caused by: java.lang.NullPointerException
02-13 11:42:40.865: E/AndroidRuntime(1239):     at android.app.Activity.registerForContextMenu(Activity.java:2911)
02-13 11:42:40.865: E/AndroidRuntime(1239):     at br.com.caelum.cadastro.ListaAlunosActivity.onCreate(ListaAlunosActivity.java:62)
02-13 11:42:40.865: E/AndroidRuntime(1239):     at android.app.Activity.performCreate(Activity.java:5231)
02-13 11:42:40.865: E/AndroidRuntime(1239):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
02-13 11:42:40.865: E/AndroidRuntime(1239):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
02-13 11:42:40.865: E/AndroidRuntime(1239):     ... 11 more
solução!

Finalmente consegui!

O Erro estava em

protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.item);

o correto seria

setContentView(R.layout.listagem_alunos);

modifiquei o layout , porque avia criado um novo layout, mas na verdade é o mesmo layout mas inflado por outro,

na Classe LIstaAlunos Adpter.

public View getView(int posicao, View convertView, ViewGroup parent) {

        Aluno aluno = listAlunos.get(posicao);
        View view = activity.getLayoutInflater().inflate(br.com.caelum.cadastro.R.layout.item, null);

Também testei a verificação do cursor, conforme vc explicou tb funcionou, com verificação ou não funciona..

if(null != c)
       if(c.getCount() > 0)
        {
            while(c.moveToNext())
            {
                Aluno aluno = new Aluno();
                aluno.setId(c.getLong(c.getColumnIndex("id")));
                aluno.setNome(c.getString(c.getColumnIndex("nome")));
                aluno.setTelefone(c.getString(c.getColumnIndex("telefone")));
                aluno.setEndereco(c.getString(c.getColumnIndex("endereco")));
                aluno.setSite(c.getString(c.getColumnIndex("site")));
                aluno.setNota(c.getDouble(c.getColumnIndex("nota")));
                aluno.setCaminhoFoto(c.getString(c.getColumnIndex("caminhoFoto")));

                listaDeAlunos.add(aluno);               

            }
       }
        else{ listaDeAlunos = new ArrayList(); }

Obrigado pela dedicação