2014-01-22 3 views
0

일반적으로이 코드를 사용하여 listView를 채 웁니다. 그러나이 코드를 사용하여 장치에 설치된 응용 프로그램 이름을 채울 때이 코드에서 오류가 발생합니다. 이 문제를 해결하고 해결책을 설명해 주시겠습니까?IllegalStateException : 활동의 메서드를 실행할 수 없습니다.

AdminActivity.java

private void listviewItems() { 
final PackageManager pm = getPackageManager(); 
    List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA); 
    ArrayList<HashMap<String, String>> arraylist_AppDetails = new ArrayList<HashMap<String, String>>(); 
    HashMap<String, String> hashmap = null;   
    int id = 1; 

    for (ApplicationInfo packageInfo : packages) { 
     String appName = (String) pm.getApplicationLabel(packageInfo); 
     String packageName = packageInfo.packageName; 

     if(pm.getLaunchIntentForPackage(packageInfo.packageName)!= null && !pm.getLaunchIntentForPackage(packageInfo.packageName).equals("")){    hashmap = new HashMap<String, String>();     
      hashmap.put(Constants.APP_NAME, appName); 
      hashmap.put(Constants.PACKAGE_NAME, packageName); 
      hashmap.put(Constants.ID, String.valueOf(id++)); 
      arraylist_AppDetails.add(hashmap); 

      Log.i("arraylist_AppDetails", String.valueOf(arraylist_AppDetails)); 
     } 
    } 

    ListView lv_InstalledApp = (ListView) findViewById(R.id.lv_InstalledApp); 
    CustomAdapter_InstalledApps installAppsAdapter = new CustomAdapter_InstalledApps(
      AdminActivity.this, arraylist_AppDetails, 
      R.layout.attribute_applist, 
      Constants.APPDATA_ATTRIBUTE_KEYS, 
      Constants.APPDATA_ATTRIBUTES_VIEWS, true); 
    lv_InstalledApp.setAdapter(installAppsAdapter); 
} 

customAdapter.java

private Context context; 
private final ArrayList<HashMap<String, String>> mData; 
private ArrayList<HashMap<String, String>> unfilteredValues; 
private boolean chosenValues, ismarkAll = true; 
private int resource; 
private String[] from; 
private int[] to; 
private SimpleFilter mFilter; 
private ArrayList<String> arraylistAppId; 
private ArrayList<String> arraylistAppSelected; 

private final boolean[] mCheckedState; 

public CA_InstalledApps(Context context, 
     ArrayList<HashMap<String, String>> data, int resource, 
     String[] from, int[] to, boolean chosenValues) { 
    super(context, data, resource, from, to); 

    mCheckedState = new boolean[data.size()]; 

    this.context = context; 
    mData = data; 
    this.unfilteredValues = mData; 
    this.resource = resource; 
    this.from = from; 
    this.to = to; 
    this.arraylistAppId = new ArrayList<String>(); 
    this.arraylistAppSelected = new ArrayList<String>(); 
    this.chosenValues = chosenValues; 

} 

@Override 
public View getView(final int position, View convertView, ViewGroup parent) { 
    LayoutInflater inflater = LayoutInflater.from(context); 
    final int pos = position; 
    // View rowView = null; 
    try { 
     // if(convertView == null){ 
     convertView = inflater.inflate(resource, null, true); 
     TextView tv_C_ID = (TextView) convertView.findViewById(to[0]); 
     TextView tv_C_APPNAME = (TextView) convertView.findViewById(to[1]); 
     TextView tv_C_PACKAGENAME = (TextView) convertView.findViewById(to[2]); 

     String C_ID = from[0]; 
     String C_APPNAME = from[1]; 
     String C_PACKAGENAME = from[2]; 

     // getting the value in hashmap 
     final String _id = unfilteredValues.get(position).get(C_ID) 
       .toString(); 
     String _appname = unfilteredValues.get(position).get(C_APPNAME) 
       .toString(); 
     String _packagename = unfilteredValues.get(position).get(C_PACKAGENAME) 
       .toString(); 


     tv_C_ID.setText(_id); 
     tv_C_APPNAME.setText(_appname); 
     tv_C_PACKAGENAME.setText(_packagename); 

     // Setting the ID 
     tv_C_ID.setId(position); 
     tv_C_APPNAME.setId(position); 
     tv_C_PACKAGENAME.setId(position); 

     // } 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } catch (OutOfMemoryError E) { 
     E.printStackTrace(); 
    } 

    return convertView; 
} 

    // Other codes from here.... 

로그 캣

01-23 09:39:01.964: E/AndroidRuntime(6214): FATAL EXCEPTION: main 
01-23 09:39:01.964: E/AndroidRuntime(6214): java.lang.IllegalStateException: Could not execute method of the activity 
01-23 09:39:01.964: E/AndroidRuntime(6214):  at android.view.View$1.onClick(View.java:3698) 
01-23 09:39:01.964: E/AndroidRuntime(6214):  at android.view.View.performClick(View.java:4222) 
01-23 09:39:01.964: E/AndroidRuntime(6214):  at android.view.View$PerformClick.run(View.java:17273) 
01-23 09:39:01.964: E/AndroidRuntime(6214):  at android.os.Handler.handleCallback(Handler.java:615) 
01-23 09:39:01.964: E/AndroidRuntime(6214):  at android.os.Handler.dispatchMessage(Handler.java:92) 
01-23 09:39:01.964: E/AndroidRuntime(6214):  at android.os.Looper.loop(Looper.java:137) 
01-23 09:39:01.964: E/AndroidRuntime(6214):  at android.app.ActivityThread.main(ActivityThread.java:4895) 
01-23 09:39:01.964: E/AndroidRuntime(6214):  at java.lang.reflect.Method.invokeNative(Native Method) 
01-23 09:39:01.964: E/AndroidRuntime(6214):  at java.lang.reflect.Method.invoke(Method.java:511) 
01-23 09:39:01.964: E/AndroidRuntime(6214):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:994) 
01-23 09:39:01.964: E/AndroidRuntime(6214):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:761) 
01-23 09:39:01.964: E/AndroidRuntime(6214):  at dalvik.system.NativeStart.main(Native Method) 
01-23 09:39:01.964: E/AndroidRuntime(6214): Caused by: java.lang.reflect.InvocationTargetException 
01-23 09:39:01.964: E/AndroidRuntime(6214):  at java.lang.reflect.Method.invokeNative(Native Method) 
01-23 09:39:01.964: E/AndroidRuntime(6214):  at java.lang.reflect.Method.invoke(Method.java:511) 
01-23 09:39:01.964: E/AndroidRuntime(6214):  at android.view.View$1.onClick(View.java:3693) 
01-23 09:39:01.964: E/AndroidRuntime(6214):  ... 11 more 
01-23 09:39:01.964: E/AndroidRuntime(6214): Caused by: java.lang.NullPointerException 
01-23 09:39:01.964: E/AndroidRuntime(6214):  at com.example.kioskmode.AdminActivity.listviewItems(AdminActivity.java:142) 
01-23 09:39:01.964: E/AndroidRuntime(6214):  at com.example.kioskmode.AdminActivity.viewInstalledApps(AdminActivity.java:100) 
01-23 09:39:01.964: E/AndroidRuntime(6214):  at com.example.kioskmode.AdminActivity.onButtonClicked(AdminActivity.java:53) 

답변

0

0으로부터이 가장 바깥 쪽이지만 Caused by: 절에서 S_2nd_AdminActivity.java 파일의 142 번째 줄에 NullPointerException이 발생하고 S_2nd_AdminActivity.listviewItems()에 예외가 있음을 알 수 있습니다. 그러면이 NPE가 에스컬레이트되고 Android 프레임 워크 클래스는 결국 IllegalStateException을 던집니다.

hashmap.put(Constants.APP_NAME, appName); 

다음 NPE 원인을 무엇에 관해서는

는 라인 (142)이 하나? 위의 명령을 실행할 때 붙인 코드에서 여전히 nullhashmap 변수에 유효한 Map 인스턴스에 영향을 미치지 않는 것 같습니다. null은 역 참조 할 수 없으며 VM은 NullPointerException을 던집니다.

+0

위의 수정 사항을 참조하십시오. – androidBoomer

+0

내 대답을 편집했습니다. 올바르게 보이지 않고 여전히 파악할 수없는 경우 줄 번호 (또는 어느 것이 l.142인지)를 제공해주십시오. – desseim

+0

우우, 알았어. 자, 내 문제는 내가 어떻게 접근 할 수 있도록 각 appName과 packageName을 얻을 수 있느냐입니다. – androidBoomer

관련 문제