Tecnologia do Blogger.
RSS

Re: [androidbrasil-dev] Encontrando o NullPointerException

NPE eh a exceção mais fácil de tratar...

Olhe na classe PedidoPizzaDialog.java, na linha 48.

Voce com certeza está apontando para algum objeto que você não esperava que ficasse null, mas está.

Em 23/10/2013 15:12, "Carlos Augusto Terceiro Batista" <carlosaugustoterceiro@gmail.com> escreveu:
Tenta debugar..


2013/10/23 Henrique Melo <henrique1985@gmail.com>
Se vc marcar as linhas que são mostradas na mensagem de erro, até posso tentar ajudar.


2013/10/23 Matheus Henrique da Silva <matheustargaryen@gmail.com>
A classe:
public class ItemPizza extends ItemCardapio {

HashMap<String, Double> preços;

public ItemPizza(long id, int tipo, String nome) {
super(id, tipo, nome);
preço = null;
preços = new HashMap<String, Double>();
}


public void setPreço(String k, Double p) {
preços.put(k, p);
}


public Double getPreço(String key) {
return preços.get(key);
}

}



O fragmento que exibe a lista:
public class CardapioListFragment extends Fragment implements
OnItemClickListener {

private int tipo;
private List<ItemCardapio> lista;
private ListView lv;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
tipo = getArguments().getInt(CardapioActivity.EXTRA_TIPO_ITEM);

popularLista(tipo);

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.listview_layout, null);
lv = (ListView) v.findViewById(R.id.listview);
lv.setAdapter(new Cardapio_Adapter(getActivity(), lista));
lv.setOnItemClickListener(this);
return v;
}

void popularLista(int tipo) {
lista = new ArrayList<ItemCardapio>();
try {
switch (tipo) {
case CardapioActivity.TIPO_PIZZA:
lista = CardapioActivity.db.getPizzas();
break;
case CardapioActivity.TIPO_PIZZA_DOCE:
lista = CardapioActivity.db.getPizzasDoces();
break;
case CardapioActivity.TIPO_MASSA:
lista = CardapioActivity.db.getMassas();
break;
default:
throw new JSONException(
"Erro ao popular a lista, CardapioListFragment.popularLista();");

}
} catch (JSONException e) {
e.printStackTrace();
}
}

@Override
public void onItemClick(AdapterView<?> adapter, View view, int pos, long id) {
if (tipo == CardapioActivity.TIPO_MASSA) {
ItemCardapio item = lista.get(pos);
PedidoMassaDialog dialog = PedidoMassaDialog.newInstance(item);
dialog.show(getFragmentManager(), null);
} else {
ItemPizza item = (ItemPizza) lista.get(pos);
Toast.makeText(
getActivity(),
String.valueOf(item
.getPreço(CardapioActivity.EXTRA_PREÇO_M)),
Toast.LENGTH_LONG).show();
PedidoPizzaDialog dialog = PedidoPizzaDialog.newInstance(item);
dialog.show(getFragmentManager(), null);
}

}
}

O adapter:
public class Cardapio_Adapter extends BaseAdapter {

Context context;
List<ItemCardapio> lista;
List<ItemPizza> listapizza;

public Cardapio_Adapter(Context context, List<ItemCardapio> lista) {
this.context = context;
this.lista = lista;
}

@Override
public int getCount() {
return lista.size();
}

@Override
public Object getItem(int arg0) {
return lista.get(arg0);
}

@Override
public long getItemId(int arg0) {
return lista.get(arg0).getId();
}

@Override
public View getView(int arg0, View view, ViewGroup viewgroup) {
ItemCardapio item = (ItemCardapio) getItem(arg0);
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.item_menu_layout, null);

TextView nome = (TextView) view.findViewById(R.id.text_label_menu);
TextView desc = (TextView) view.findViewById(R.id.text_desc_menu);
nome.setText(item.getNome());
desc.setText(item.getDesc());

if (item.getTipo() == CardapioActivity.TIPO_PIZZA
|| item.getTipo() == CardapioActivity.TIPO_PIZZA_DOCE) {
return view;
} else {
TextView preco = (TextView) view
.findViewById(R.id.preco_item_lista);
preco.setText("R$ " + item.getPreço());
return view;
}

}

}

Onde as listas estao sendo criadas:
public List<ItemCardapio> getPizzas() throws JSONException {
return testeLista(CardapioActivity.TIPO_PIZZA);
}


public List<ItemCardapio> getPizzasDoces() throws JSONException {
return testeLista(CardapioActivity.TIPO_PIZZA_DOCE);
}

// ======================MASSAS

public List<ItemCardapio> getMassas() throws JSONException {
return testeLista(CardapioActivity.TIPO_MASSA);
}


public List<ItemCardapio> testeLista(int tipo) {
lista = new ArrayList<ItemCardapio>();

if (tipo == CardapioActivity.TIPO_PIZZA
|| tipo == CardapioActivity.TIPO_PIZZA_DOCE) {

for (int i = 0; i < 10; i++) {
ItemPizza item = new ItemPizza(i + 100, tipo, "Item de Teste "
+ i);
item.setDesc("Descrição do item " + i);
item.setPreço(CardapioActivity.EXTRA_PREÇO_P, 10.0);
item.setPreço(CardapioActivity.EXTRA_PREÇO_M, 20.0);
item.setPreço(CardapioActivity.EXTRA_PREÇO_G, 30.0);
item.setPreço(CardapioActivity.EXTRA_PREÇO_F, 40.0);

lista.add(item);
}

return lista;
} else {
for (int i = 0; i < 10; i++) {
ItemCardapio item = new ItemCardapio(i + 100, tipo,
"Item de Teste " + i);
item.setDesc("Descrição do item " + i);
item.setPreço(25.00);

lista.add(item);
}
return lista;
}

}

Quando eu clico na lista de pizzas ou pizzas doces, na hora de instanciar o PedidoPizzaDialog da o seguinte conjunto de erros:
10-23 17:49:38.452: E/AndroidRuntime(1668): FATAL EXCEPTION: main
10-23 17:49:38.452: E/AndroidRuntime(1668): java.lang.NullPointerException
10-23 17:49:38.452: E/AndroidRuntime(1668): at pizzaria.lafornalha.fragment.PedidoPizzaDialog.<init>(PedidoPizzaDialog.java:48)
10-23 17:49:38.452: E/AndroidRuntime(1668): at pizzaria.lafornalha.fragment.PedidoPizzaDialog.newInstance(PedidoPizzaDialog.java:26)
10-23 17:49:38.452: E/AndroidRuntime(1668): at pizzaria.lafornalha.fragment.CardapioListFragment.onItemClick(CardapioListFragment.java:86)
10-23 17:49:38.452: E/AndroidRuntime(1668): at android.widget.AdapterView.performItemClick(AdapterView.java:292)
10-23 17:49:38.452: E/AndroidRuntime(1668): at android.widget.AbsListView.performItemClick(AbsListView.java:1058)
10-23 17:49:38.452: E/AndroidRuntime(1668): at android.widget.AbsListView$PerformClick.run(AbsListView.java:2514)
10-23 17:49:38.452: E/AndroidRuntime(1668): at android.widget.AbsListView$1.run(AbsListView.java:3168)
10-23 17:49:38.452: E/AndroidRuntime(1668): at android.os.Handler.handleCallback(Handler.java:605)
10-23 17:49:38.452: E/AndroidRuntime(1668): at android.os.Handler.dispatchMessage(Handler.java:92)
10-23 17:49:38.452: E/AndroidRuntime(1668): at android.os.Looper.loop(Looper.java:137)
10-23 17:49:38.452: E/AndroidRuntime(1668): at android.app.ActivityThread.main(ActivityThread.java:4340)
10-23 17:49:38.452: E/AndroidRuntime(1668): at java.lang.reflect.Method.invokeNative(Native Method)
10-23 17:49:38.452: E/AndroidRuntime(1668): at java.lang.reflect.Method.invoke(Method.java:511)
10-23 17:49:38.452: E/AndroidRuntime(1668): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
10-23 17:49:38.452: E/AndroidRuntime(1668): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
10-23 17:49:38.452: E/AndroidRuntime(1668): at dalvik.system.NativeStart.main(Native Method)


Já estou a varias horas nisto. Por favor alguém me ajude.

--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.



--
Henrique Nogueira de Melo
Analista e Arquiteto de Software

--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.



--
Atenciosamente,

Carlos Terceiro.

Analista Desenvolvedor Web @TechWay Info
Técnico em Informática - IFCE
OCJP - Oracle Certified Professional, Java SE 6 Programmer
(085) 8777-7359

--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 comentários:

Postar um comentário