2015-05-13 6 views
0

Мне нужно преобразовать список в строку []. Как это сделать?convert List <ApplicationInfo> to String []

Я пробовал с этим:

PackageManager packageManager = getPackageManager(); 
    List<ApplicationInfo> liste_aller_Anwendungen = packageManager.getInstalledApplications(PackageManager.GET_META_DATA); 

    String[] strings = liste_aller_Anwendungen.toArray(new String[liste_aller_Anwendungen.size()]); 

, но это приводит следующие ошибки LogCat:

java.lang.ArrayStoreException: source[0] of type android.content.pm.ApplicationInfo cannot be stored in destination array of type java.lang.String[] 
     at java.lang.System.arraycopy(Native Method) 
     at java.util.ArrayList.toArray(ArrayList.java:523) 
     at de.gestureanywhere.HintergrundService.onGesturePerformed(HintergrundService.java:152) 
     at android.gesture.GestureOverlayView.fireOnGesturePerformed(GestureOverlayView.java:729) 
     at android.gesture.GestureOverlayView.access$400(GestureOverlayView.java:55) 
     at android.gesture.GestureOverlayView$FadeOutRunnable.run(GestureOverlayView.java:744) 
     at android.os.Handler.handleCallback(Handler.java:733) 
     at android.os.Handler.dispatchMessage(Handler.java:95) 
     at android.os.Looper.loop(Looper.java:136) 
     at android.app.ActivityThread.main(ActivityThread.java:5034) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:515) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:611) 
     at dalvik.system.NativeStart.main(Native Method) 

Благодарности

ответ

1

прежде всего:

<T> T[]  toArray(T[] a) 
Returns an array containing all of the elements in this list in proper sequence (from first to last element); the runtime type of the returned array is that of the specified array. 

так заметить, что ты пытаясь сохранить список ApplicationInfo в списке String, что невозможно. способ сделать это следующим образом:

String[] strings = new String[liste_aller_Anwendungen.size()]; 
for(int i = 0; i < liste_aller_Anwendungen.size(); i++) { 
    strings[i] = liste_aller_Anwendungen[i].toString(); // or whatever you want, it just needs to be a `String` 
}