문제

Everytime I tried to run these code the program crashed then I tried to get an Array of Objects from my LinkedList.

Product[] arr = (Product[])produktliste.toArray(); causes the crash

This is the source of the MainActivity:

package at.lamprechtdominik.myfirstlistapp;

import java.util.LinkedList;

import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;
import android.app.Activity;
import android.content.Intent;

    public class MainActivity extends Activity {

public static LinkedList<Product> produktliste = new LinkedList<Product>();
private Button benutzerAnlegen;
private Button listeAnzeigen;
private EditText nameProdukt;
private EditText preisProdukt;
private CheckBox istVorhanden;

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

    benutzerAnlegen = (Button) findViewById(R.id.btBenutzerAnlegen);
    nameProdukt = (EditText) findViewById(R.id.etProduktname);
    preisProdukt = (EditText) findViewById(R.id.etPreis);
    istVorhanden = (CheckBox) findViewById(R.id.cbProduktVorhanden);
    listeAnzeigen = (Button) findViewById(R.id.btZeigeListe);

    benutzerAnlegen.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            produktliste.add(neuesProduktAnlegen());            
            Toast.makeText(getBaseContext(), R.string.anlegen_erfolgreich, Toast.LENGTH_LONG).show();
        }
    });

    listeAnzeigen.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            //Intent i = new Intent(getBaseContext(), Produktauflistung.class);
            //startActivity(i);
            Product[] arr = (Product[])produktliste.toArray();
        }
    });
}

private Product neuesProduktAnlegen(){
    String name = nameProdukt.toString();
    Double preis = Double.parseDouble(preisProdukt.getText().toString());
    boolean vorhanden;

    if(istVorhanden.isChecked()){
        vorhanden = true;
    } else {
        vorhanden = false;
    }
    Product neuesProdukt = new Product(name, preis , vorhanden);

    return(neuesProdukt);
}
}

class file Product:

package at.lamprechtdominik.myfirstlistapp;

public class Product {

private String name;
private Double preis;
private boolean istVorhanden;

public Product(String name, Double preis, boolean istVorhanden){
    this.name = name;
    this.preis = preis;
    this.istVorhanden = istVorhanden;
}

public String getName(){
    return(name);
}

public Double getPreis(){
    return(preis);
}

public boolean getIstVorhanden(){
    return(istVorhanden);
}
}

Does anyone know how what i did wrong?

Thanks for your help.

도움이 되었습니까?

해결책

You cannot simply cast the result of toArray() to a Product[] array.

Use this:

Product[] meineProdukte = new Product(produktliste.size());
meineProdukte = produktliste.toArray(meineProdukte);

다른 팁

Try to change to

Product[] arr = produktliste.toArray(new Product[produktliste.size()]); 
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top