0

每次我尝试运行这些代码时,程序都会崩溃,然后我尝试从我的 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);
}
}

有谁知道我做错了什么?

谢谢你的帮助。

4

2 回答 2

1

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

用这个:

Product[] meineProdukte = new Product(produktliste.size());
meineProdukte = produktliste.toArray(meineProdukte);
于 2014-01-25T15:53:59.310 回答
0

尝试更改为

Product[] arr = produktliste.toArray(new Product[produktliste.size()]); 
于 2014-01-25T15:50:54.877 回答