LinkedList toArray导致崩溃

时间:2014-01-25 15:46:36

标签: android linked-list toarray

每当我试图运行这些代码时程序崩溃,然后我试图从我的LinkedList中获取一个对象数组。

Product [] arr =(Product [])produktliste.toArray();导致崩溃

这是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);
}
}

类文件产品:

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);
}
}

有谁知道我做错了什么?

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您不能简单地将toArray()的结果转换为Product []数组。

使用此:

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

答案 1 :(得分:0)

尝试更改为

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