• After 15+ years, we've made a big change: Android Forums is now Early Bird Club. Learn more here.

Not working context menu item in fragment

Java:
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");
    }
}

I have fragment(ThreeFragment) with button(InternalBtn) that have a context menu. Context menu registered with registerForContextMenu(IntBtn); Menu item ClearCacheMet not working. I cannot see neither Toast.makeText().show(); nor Log.d(TAG, "ClearCache"); Common and ITEM_CANCEL items working. I cannot understand why? Please help me.
Toast.makeText(getActivity(), "Called !", Toast.LENGTH_SHORT).show(); not called in ClearCache() function. ClearCacheMet and Common were initialized in other fragment.

public class OneFragment extends Fragment {
public View OneFragmentView = null;
public static final int Common = 25;
public static final int ClearCacheMet = 50;
 
There's no Toast statement in your code. Please clarify what the problem is. If your application crashed, please include the stack trace from the Logcat view.
 
Back
Top Bottom