Tecnologia do Blogger.
RSS

[androidbrasil-dev] Re: Encontrando o NullPointerException

No dia seguinte com menos sono eu consegui encontrar o problema. Ainda apanho no esquema de herança, declarar pai e instanciar filho, etc. Mas de qualquer forma obrigado a todos e desculpa encher o saco.

Em quarta-feira, 23 de outubro de 2013 15h58min03s UTC-2, Matheus Henrique da Silva escreveu:
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.

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

0 comentários:

Postar um comentário