2016-10-27 6 views
1

Я пытаюсь просмотреть некоторые аудиофайлы в папке на моем телефоне. Эта проблема возникает, когда я пытаюсь протестировать 2 телефона Android 4.4. С андроидом 6.0 нет проблем. Это мой Просмотр файла:Android View Audio Files NumberFormatException

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    // TODO Auto-generated method stub 
    View view = convertView; 
    final ViewHolder holder; 
    if (view == null) { 
     LayoutInflater inflater = (LayoutInflater) mContext 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     view = inflater.inflate(R.layout.song, null); 

     holder = new ViewHolder(); 

     view.setTag(holder); 
    } else { 
     holder = (ViewHolder) view.getTag(); 
    } 

    holder.name=(TextView)view.findViewById(R.id.song_title); 
    holder.artist=(TextView)view.findViewById(R.id.song_artist); 
    holder.time=(TextView)view.findViewById(R.id.song_duration); 
    holder.img_play=(LinearLayout)view.findViewById(R.id.playmusic_btn); 
    holder.rb=(RadioButton)view.findViewById(R.id.radiobutton); 
    holder.rb.setVisibility(View.GONE); 
    final Song currSong = (Song)songs.get(position); 
    holder.name.setText(currSong.getTitle()); 
    holder.artist.setText(currSong.getArtist()); 
    long l = Long.parseLong(currSong.getDuration()); 
    String obj1 = String.valueOf((l % 60000L)/1000L); 
    String obj2 = String.valueOf(l/60000L); 
    if (obj1.length() == 1) 
    { 
     holder.time.setText((new StringBuilder("0")).append(((String) (obj2))).append(":0").append(((String) (obj1))).toString()); 
    } else 
    { 
     holder.time.setText((new StringBuilder("0")).append(((String) (obj2))).append(":").append(((String) (obj1))).toString()); 
    } 
    holder.img_play.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      File view1 = new File(currSong.getPath()); 
      Intent intent = new Intent("android.intent.action.VIEW"); 
      intent.setDataAndType(Uri.fromFile(view1), "audio/*"); 
      mContext.startActivity(intent); 
     } 
    }); 


    return view; 
} 

public class ViewHolder { 

    public TextView name,artist,time; 
    LinearLayout img_play; 
    RadioButton rb; 


} 

Это ошибка, полученный при выполнении:

10-27 23:22:59.324: E/AndroidRuntime(16003): java.lang.NumberFormatException: Invalid long: "null" 

Кто-нибудь знает, пожалуйста, помогите мне. Спасибо

ответ

0

Ошибка в этой строке:

long l = Long.parseLong(currSong.getDuration()); 

Как-то объект «currSong» не имеет никакого значения для продолжительности.
Это означает, что когда вы выполняете currSong.getDuration(), оно возвращается null.
При попытке разобрать долго, что это на самом деле null, он будет бросать NumberFormatException

Я предлагаю вам взять печать перед выполнением Long.parseLong, чтобы подтвердить, что на самом деле длительность песни равна нулю. Кроме того, вы можете обернуть свой код на пункте try-catch:

long l; 
try { 
    l = Long.parseLong(currSong.getDuration()); 
} catch(NumberFormatException e){ 
    e.printStackTrace(); 
} 

С уважением,

+1

большое спасибо @Ricardo, Ты моя жизнь спасителя. –

 Смежные вопросы

  • Нет связанных вопросов^_^