【问题标题】:LinkedList toArray causes crashLinkedList toArray 导致崩溃
【发布时间】:2014-01-25 15:46:36
【问题描述】:

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

有谁知道我做错了什么?

感谢您的帮助。

【问题讨论】:

  • 我试过了。这两种解决方案工作正常。谢谢。

标签: android linked-list toarray


【解决方案1】:

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

使用这个:

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

【讨论】:

    【解决方案2】:

    尝试改成

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

    【讨论】:

      猜你喜欢
      • 2018-01-23
      • 2020-12-02
      • 2013-11-11
      • 2011-01-24
      • 2015-02-23
      • 2011-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多