Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Android上的FirebaseDatabase获取位图时出错_Android_Firebase_Firebase Realtime Database_Bitmap_Android Bitmap - Fatal编程技术网

从Android上的FirebaseDatabase获取位图时出错

从Android上的FirebaseDatabase获取位图时出错,android,firebase,firebase-realtime-database,bitmap,android-bitmap,Android,Firebase,Firebase Realtime Database,Bitmap,Android Bitmap,我有一个类有一个位图对象,当我将value(MyClass.class)设置到FirebaseDatabase时,我发现这是可能的!实时数据库保存位图图像的属性。读取值时出现问题,出现以下错误: com.google.firebase.database.DatabaseException: Class android.graphics.Bitmap is missing a constructor with no arguments 但是我不能重写位图图像的构造函数。我怎样才能摆脱这种局面 r

我有一个类有一个位图对象,当我将value(MyClass.class)设置到FirebaseDatabase时,我发现这是可能的!实时数据库保存位图图像的属性。读取值时出现问题,出现以下错误:

com.google.firebase.database.DatabaseException: Class android.graphics.Bitmap is missing a constructor with no arguments
但是我不能重写位图图像的构造函数。我怎样才能摆脱这种局面

ref.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                Iterator<DataSnapshot> iterator = dataSnapshot.getChildren().iterator();
                log("Init ValueEventListener onDataChange()");

                while( iterator.hasNext() ) {
                    DataSnapshot data = iterator.next();
                    log("Data : " + data.getKey());
                    Treino t = data.getValue(Treino.class);
                }
            }
}

public class Treino implements Serializable{

    String nome;
    List<Exercicio> listaExercicios;
    List<Integer> listaDiasSemana;
    String hora; // hh:mm

    public Treino(String nome, List<Exercicio> listaExercicios, List<Integer> listaDiasSemana, String hora) {
        this.nome = nome;
        this.listaExercicios = listaExercicios;
        this.listaDiasSemana = listaDiasSemana;
        this.hora = hora;
    }

public class Exercicio implements Serializable {

    String nome, tipo, nomeImagem;
    Bitmap imagem;

    public Exercicio() {
    }

    public Exercicio(String nome, Bitmap imagem, String nomeImagem) {
        this.nome = nome;
        this.imagem = imagem;
        this.nomeImagem = nomeImagem;
    }
ref.addListenerForSingleValueEvent(新的ValueEventListener()){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
迭代器迭代器=dataSnapshot.getChildren().Iterator();
日志(“Init ValueEventListener onDataChange()”;
while(iterator.hasNext()){
DataSnapshot data=iterator.next();
日志(“数据:+Data.getKey());
treinot=data.getValue(Treino.class);
}
}
}
公共类Treino实现了可序列化{
字符串名称;
列表列表;
罗列清单;
字符串hora;//hh:mm
公共树(字符串nome、列表listaexercios、列表listaDiasSemana、字符串hora){
this.nome=nome;
this.listaexercios=listaexercios;
this.listaDiasSemana=listaDiasSemana;
this.hora=hora;
}
公共类Exercicio实现了可序列化{
管柱nome、tipo、nomeImagem;
位图图像;
公共实践(){
}
公共练习(字符串nome、位图imagem、字符串nomeImagem){
this.nome=nome;
this.imagem=imagem;
this.nomeImagem=nomeImagem;
}

我省略了getter和setter。

必须将位图转换为字符串

这是密码

  public String BitMapToString(Bitmap bitmap){
        ByteArrayOutputStream ByteStream=new  ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.PNG,100, ByteStream);
        byte [] b=ByteStream.toByteArray();
        String temp=Base64.encodeToString(b, Base64.DEFAULT);
        return temp;
  }
练习类

public class Exercicio implements Serializable {

String nome, tipo, nomeImagem;
String bitmapImageString;

public Exercicio() {
}

public Exercicio(String nome, String imagem, String nomeImagem) {
    this.nome = nome;
    this.bitmapImageString = imagem;
    this.nomeImagem = nomeImagem;
}
}
从服务器获取字符串时。必须将字符串转换为位图

public Bitmap StringToBitMap(String encodedString){
 try{
   byte [] encodeByte=Base64.decode(encodedString,Base64.DEFAULT);
   Bitmap bitmap=BitmapFactory.decodeByteArray(encodeByte, 0, encodeByte.length);
   return bitmap;
 }catch(Exception e){
   e.getMessage();
   return null;
 }
}
希望!帮助你