Método dando erro de java.lang.NullPointerException

6 respostas
JefersonCarlos_

Pessoal, boa tarde, sou novo com desenvolvimento “ANDROID” e estou tendo problema com um metódo que está acusando como null

segue abaixo minha classe:

package br.virtual.lista;

import java.util.ArrayList;
import java.util.List;

import br.virtual.principal.ActConstantes;
import br.virtual.principal.ActMontaAbas;
import br.virtual.principal.R;

import android.app.ListActivity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.ListView;



public class ActListaPrincipal extends ListActivity
{
	public static int codigo;
	public String teste = "";
	public static List<ActCardapioVO> cardapio;
	public Button btnfinalizar, btnlimpar, btnCancelar;
	ListView listView;
	CheckBox chk;
	private static Context mContext;
	
	public static final int Finalizar_Pedido = 10001;
	public static final int Limpar = 10002;
	public static final int Cancelar = 10004; 

	
	public void inicializaobjetos()
	{

		listView = (ListView)findViewById(android.R.id.list);
	}


	@Override
	protected void onCreate(Bundle savedInstanceState) 
	{
		super.onCreate(savedInstanceState);
		//setContentView(R.layout.main);
		//inicializaobjetos();
		setTitle(ActConstantes.NOME_APP);
		cardapio = new ArrayList<ActCardapioVO>();
		mContext = this;
		
		
		


		//---------------------------------------------------------------------------------
		//-------------- RECUPERANDO VALORES DO BUNDLE PASSADOS POR PARAMETROS ------------
		//---------------------------------------------------------------------------------

		Bundle bundle = getIntent().getExtras();
		if (bundle != null)
		{
			codigo = this.getIntent().getIntExtra("codigo",0);	
		}

		
		lista();
		

	}

	/************************************************************************************************
	 * **************************** EVENTO QUE PREENCHE A LISTA *************************************
	 * **********************************************************************************************
	 */

	public final void lista()
	{
		setContentView(R.layout.main);
		inicializaobjetos();
		
		SQLiteDatabase db = mContext.openOrCreateDatabase(ActConstantes.NOME_BD,Context.MODE_PRIVATE,null);
		String sql = "SELECT * FROM PRODUTO WHERE CODGRUPO = " + codigo;

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

		c.moveToFirst();
		while ( !c.isAfterLast())
		{
			cardapio.add(new ActCardapioVO(c.getInt(c.getColumnIndex("CODIGO")),
							c.getString(c.getColumnIndex("DESCRI")), 
							c.getBlob(c.getColumnIndex("DESCRIDETALHADA")), 
							c.getFloat(c.getColumnIndex("AVISTA")),
							c.getBlob(c.getColumnIndex("IMGPROD")),
							c.getInt(c.getColumnIndex("QTDE")),
							false));
		
		
			c.moveToNext();
		}
		c.close();

		if(db != null)
		{
			db.close();
		}
		
		BaseAdapter adapter = new ActCardapioAdapter(ActListaPrincipal.this, cardapio);
		listView.setAdapter(adapter);
		
		
		
		
	}
	
	/************************************************************************************************
	 * **************************************** CRIA OS MENUS ***************************************
	 * **********************************************************************************************
	 */
	public boolean onCreateOptionsMenu(Menu menu) 
	{
		boolean result = super.onCreateOptionsMenu(menu);
		menu.add(0, Finalizar_Pedido, 0, "Finalizar Pedido").setIcon(android.R.drawable.ic_menu_upload);
		menu.add(0, Limpar, 0, "Limpar").setIcon(android.R.drawable.ic_menu_delete);
		menu.add(0, Cancelar, 0, "Cancelar").setIcon(android.R.drawable.ic_menu_close_clear_cancel);
		return result;
    }
	
	/************************************************************************************************
	 * **************** OPÇÃO É REALIZADA QUANDO VOCÊ ESCOLHE ALGUNS DO MENUS ***********************
	 * **********************************************************************************************
	 */
	 public boolean onMenuItemSelected(int featureId, MenuItem item) 
	 {
		 switch(item.getItemId()) 
	     {
		 	case Finalizar_Pedido : 
	    	{
	            //finalizarPedido();
	    	    return(true);
	    	}
	    	    
	    	case Limpar : 
	    	{
	            limpar();
	    	    return(true);
	    	}
	    	
	    	case Cancelar:
	    	{
	    	 	cancelar();
	    	 	return(true);
	    	 }
	     }
	     return(false);
	 }

	 /************************************************************************************************
		 * ********************************* MENU CANCELAR *******************************************
		 * *******************************************************************************************
		 */
	 public void cancelar()
	 {
		 finish();
	 }
	 
	 
	 /************************************************************************************************
		 * ********************************** BOTÃO LIMPAR *******************************************
		 * *******************************************************************************************
		 */
	 public void limpar()
	 {
		 SQLiteDatabase db = openOrCreateDatabase(ActConstantes.NOME_BD,Context.MODE_PRIVATE,null);
		 String sql = "SELECT QTDE FROM PRODUTO WHERE CODGRUPO = " + codigo;

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

		 c.moveToFirst();
		 if (c != null)
		 {
			 String sql1 = "UPDATE PRODUTO SET QTDE = NULL WHERE CODGRUPO = " + codigo;
				 
			 db.execSQL(sql1);
		 }
		 
		 db.close();
		 c.close();
		 
		 
		 Intent it = new Intent(ActListaPrincipal.this, ActMontaAbas.class);
		 startActivity(it);
		 finish();
	 }
	 
	 
	 
}

segue logo abaixo o LOGCAT com os erros :

08-13 16:14:09.072: E/AndroidRuntime(223): Uncaught handler: thread main exiting due to uncaught exception
08-13 16:14:09.092: E/AndroidRuntime(223): java.lang.NullPointerException
08-13 16:14:09.092: E/AndroidRuntime(223): 	at android.app.Activity.setContentView(Activity.java:1622)
08-13 16:14:09.092: E/AndroidRuntime(223): 	at br.virtual.lista.ActListaPrincipal.lista(ActListaPrincipal.java:84)
08-13 16:14:09.092: E/AndroidRuntime(223): 	at br.virtual.lista.ActCardapioAdapter$2$1.onClick(ActCardapioAdapter.java:208)
08-13 16:14:09.092: E/AndroidRuntime(223): 	at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:158)
08-13 16:14:09.092: E/AndroidRuntime(223): 	at android.os.Handler.dispatchMessage(Handler.java:99)
08-13 16:14:09.092: E/AndroidRuntime(223): 	at android.os.Looper.loop(Looper.java:123)
08-13 16:14:09.092: E/AndroidRuntime(223): 	at android.app.ActivityThread.main(ActivityThread.java:4363)
08-13 16:14:09.092: E/AndroidRuntime(223): 	at java.lang.reflect.Method.invokeNative(Native Method)
08-13 16:14:09.092: E/AndroidRuntime(223): 	at java.lang.reflect.Method.invoke(Method.java:521)
08-13 16:14:09.092: E/AndroidRuntime(223): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
08-13 16:14:09.092: E/AndroidRuntime(223): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
08-13 16:14:09.092: E/AndroidRuntime(223): 	at dalvik.system.NativeStart.main(Native Method)

6 Respostas

nel

Essa exceção nada mais é que uma referência nula tentando executar uma ação, algo como:

String str = null;
str.trim();

Dá uma olhada nessa linha, em seu código:

setContentView(R.layout.main);

Cadê a variável R ?
E tu acessa o layout direto ? Sem um get/set ?
Não deixa de usar encapsulamento…

JefersonCarlos_

R = seria a classe R do meu projeto, para inflar o layout…
é que eu estou tentando atualizar uma lista, e sempre que ele for alterada eu recriar a lista, mais estou com problemas, não está dando certo, está com esse erro … mais alguma coisa que eu possa ser ou que eu possa alterar?

douglaskd

não conheço de android, mais acho que você deve criar o layout antes de usa-lo como no post abaixo:

http://www.guj.com.br/java/251084-android-mais-de-um-objeto-no-setcontentview

JefersonCarlos_

Layout ja está criado … tudo certo … está tudo correto “quer dizer quase tudo”, rs, mais de acordo com os padrões está certo, a unica coisa que não sei, é porque que quando eu chamo esse método de outra classe ele me retorna null e fecha a aplicação ! :confused:

JefersonCarlos_

HELP ?

nel

Calma, não fica dando “help” ou “up” para seu tópico ficar no topo, é uma total falta de ética.
Se ninguém respondeu ainda, é porque não sabe ou teve tempo.

Se funciona a um primeiro momento e depois não mais, tenta analisar o momento em que deixa de funcionar e investigar a causa.
Te mostrei o que é um NullPointerException, agora é estudar como resolver. Tenta depurar o teu programa, passo a passo, que fica mais fácil.

Criado 13 de agosto de 2012
Ultima resposta 13 de ago. de 2012
Respostas 6
Participantes 3