片段中不工作的上下文菜单项

时间:2017-08-13 18:58:07

标签: android

public class ThreeFragment extends Fragment {
public View ThreeFragmentView = null;
public static TextView internalMemoryInfo;
public static Button IntBtn;

public ThreeFragment() {
    // Required empty public constructor
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    if (ThreeFragmentView == null) ThreeFragmentView = inflater.inflate(R.layout.fragment_three, container, false);
    internalMemoryInfo = (TextView) ThreeFragmentView.findViewById(R.id.textViewInternalMemoryInfo);
    IntBtn = (Button) ThreeFragmentView.findViewById(R.id.InternalBtn);
    return ThreeFragmentView;
}

public static void showText(String text) {
    internalMemoryInfo.setText(text);
}

@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    registerForContextMenu(IntBtn);
}

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
    switch (v.getId()){
        case R.id.InternalBtn:
            menu.setHeaderTitle("Internal Memory Menu");
            menu.add(0, ClearCacheMet, 0, "Clear Cache");
            menu.add(0, Common, 0, "Go to Common Tab");
            menu.add(0, ITEM_CANCEL, 0, "Cancel");
            break;
    }
}

@Override
public boolean onContextItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case ClearCacheMet:
            ClearCache();                   <-------This not working
            break;
        case Common:
            tabLayout.getTabAt(0).select(); <-------This working
            break;
        case ITEM_CANCEL:
            ins.closeContextMenu();         <-------This working
            break;
    }
    return true;
}

public static boolean deleteDir(File dir){
    if (dir != null && dir.isDirectory()) {
        String[] children = dir.list();
        for (int i = 0; i < children.length; i++) {
            boolean success = deleteDir(new File(dir, children[i]));
            if (!success) {
                return false;
            }
        }
    }
    return dir.delete();
}

public static void ClearCache() {
    File cache = ins.getCacheDir();
    File appDir = new File(cache.getParent());
    if (appDir.exists()) {
        String[] children = appDir.list();
        for (String s : children) {
            if (!s.equals("lib")) {
                deleteDir(new File(appDir, s));
            }
        }
    }

    try{
        /*if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            ((ActivityManager) ins.getSystemService(Context.ACTIVITY_SERVICE)).clearApplicationUserData();
        } else {*/
            File externalcache = ins.getExternalCacheDir();
            File externalappDir = new File(externalcache.getParent());
            if (externalappDir.exists()) {
                String[] children = externalappDir.list();
                for (String s : children) {
                    if (!s.equals("lib")) {
                        deleteDir(new File(externalappDir, s));
                    }
                }
            } else {
                Log.d(TAG, "No externalappDir");
            }
        /*}*/
    } catch (Exception e) {
        Log.d(TAG, "MainActivity in ClearCache");
    }
}

}

我有一个带有按钮(InternalBtn)的片段(ThreeFragment),它有一个上下文菜单。用registerForContextMenu(IntBtn)注册的上下文菜单; 菜单项ClearCacheMet无法正常工作。我既看不到Toast.makeText()。show();也不是Log.d(TAG,“ClearCache”); Common和ITEM_CANCEL项目正常工作。我不明白为什么?请帮帮我。

0 个答案:

没有答案