2013-09-22 31 views
21

我有這個應用程序,我正在清除緩存,但我不知道如何讓getPackageManager工作在片段中。 這是我的代碼。任何幫助將非常感激。我對android和java很陌生。非常感謝你。如何獲取片段中的包裝管理器Android

public class Cache extends SherlockFragment { 

    Button cache; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

     View view = inflater.inflate(R.layout.cache, null); 
     cache = (Button) view.findViewById(R.id.button3); 

     cache.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       Toast.makeText(getActivity(), "Cache is Cleared", Toast.LENGTH_SHORT).show(); 
       PackageManager pm = getPackageManager(); 

       // Get all methods on the PackageManager 
       java.lang.reflect.Method[] methods = pm.getClass().getDeclaredMethods(); 

       for (java.lang.reflect.Method m : methods) { 
        if (m.getName().equals("freeStorageAndNotify")) { 
         // Found the method I want to use 
         try { 
          long desiredFreeStorage = Long.MAX_VALUE; // Request for free space 
          m.invoke(pm, desiredFreeStorage , null); 
         } catch (Exception e) { 
          // Method invocation failed. Could be a permission problem 
         } 
         break; 
        } 
       } 
      } 

      private PackageManager getPackageManager() { 
       // TODO Auto-generated method stub 
       return null; 
      }}); 
     return view; 
    } 
} 

回答

41

,你應該能夠訪問getPackageManager(),通過getActivity()

例如getActivity().getPackageManager()

+1

感謝那個工作的人 – dfuse06