Question

When i click on the Menu of my FRAGMENT its redirect to main activity. It is not implementing "onOptionsItemSelected" of FRAGMENT.Cant override onOptionsItemSelected of main activity. Please suggest what is the problem below is the code.

public class Word_quiz_game extends Fragment implements ActionMode.Callback ,OnClickListener
{
TextView c0, c1, c2, c3, q, qNa;
TextView lang_txt;
static String langType;
ActionBar actionBar;
ProgressDialog loadingDialog;
Context context;
HashMap<String, String> map = new HashMap<String, String>();

@Override
public void onCreate(Bundle savedInstanceState) 
{
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    context=getActivity().getBaseContext();
    setHasOptionsMenu(true);
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState)
{
    View rootView = inflater.inflate(R.layout.word_quiz_game, container, false);


    try {

        context=getActivity().getBaseContext();         

        final SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
           StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
           .detectCustomSlowCalls() 
           .detectDiskReads()
           .detectDiskWrites()
           .detectNetwork()
           .penaltyLog()
           .penaltyFlashScreen() 
           .build());



           StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
           .detectLeakedSqlLiteObjects()
           .detectLeakedClosableObjects() 
           .setClassInstanceLimit(Class.forName("com.shabdkosh.left_tab.Word_quiz_game"), 100)
           .penaltyLog()
           .build());


        System.out.println(" " + sharedPreferences.getString("lang", "en"));
        map = getWordQuiz(sharedPreferences.getString("lang", "en"));


        qNa = (TextView) rootView.findViewById(R.id.prvs_ans);
        q = (TextView) rootView.findViewById(R.id.q_txt);
        c0 = (TextView) rootView.findViewById(R.id.first_txt);
        c1 = (TextView) rootView.findViewById(R.id.second_txt);
        c2 = (TextView) rootView.findViewById(R.id.third_txt);
        c3 = (TextView) rootView.findViewById(R.id.fourth_txt);


        Typeface hin_font  = Typeface.createFromAsset(context.getAssets(), hindi_font);
        qNa.setTypeface(hin_font);
        q.setTypeface(hin_font);
        c0.setTypeface(hin_font);
        c1.setTypeface(hin_font);
        c2.setTypeface(hin_font);
        c3.setTypeface(hin_font);

        c0.setOnClickListener(this);
        c1.setOnClickListener(this);
        c2.setOnClickListener(this);
        c3.setOnClickListener(this);


        LinearLayout adscontainer = (LinearLayout) rootView.findViewById(R.id.adsContainer);
        View admobAds = (View) rootView.findViewById(R.id.adView1);        
        if(PreferenceManager.getDefaultSharedPreferences(context).contains("PAYMENT_DONE")){
            if(PreferenceManager.getDefaultSharedPreferences(context).getBoolean("PAYMENT_DONE", false)){
                adscontainer.removeView(admobAds);  
            }

        }

        if (q.getText().toString() == "" | c0.getText().toString() == ""
                | c1.getText().toString() == ""
                | c2.getText().toString() == ""
                | c3.getText().toString() == "") {

            map = getWordQuiz(sharedPreferences.getString("lang", "en"));
            q.setText(map.get("question"));
            c0.setText(map.get("c0"));
            c1.setText(map.get("c1"));
            c2.setText(map.get("c2"));
            c3.setText(map.get("c3"));
        }

        qNa.setText(sharedPreferences.getString("lastAnswer", " "));



    } catch (Exception e) 
    {
        e.printStackTrace();
    }
    //setHasOptionsMenu(true);
    return rootView;
}

And below is the onOptionsItemSelected method

    @Override
public boolean onOptionsItemSelected(MenuItem item) 
{

    item.collapseActionView();
    SharedPreferences shrdPref = PreferenceManager.getDefaultSharedPreferences(context);
    shrdPref.edit().remove("lastAnswer").commit();      
    switch (item.getItemId())
    {
    case R.id.Hindi:

    if (R.id.Hindi == item.getItemId()) 

    {
        String languageToLoad = "hi"; // language
        Locale locale = new Locale(languageToLoad);
        Locale.setDefault(locale);
        Configuration config = new Configuration();
        config.locale = locale;
        PreferenceManager.getDefaultSharedPreferences(context).edit().putString("lang", "hi").commit();
        getActivity().getFragmentManager().beginTransaction().replace(R.id.frame_container, new Word_quiz_game()).commit();


    }
    else
    {
        Toast.makeText(getApplicationContext(),getResources().getString(R.string.hin_sel), Toast.LENGTH_LONG).show();           
    }

    return true;
    case R.id.English:

    if (R.id.English == item.getItemId()) 
    {
        String languageToLoad = "en"; // language
        Locale locale = new Locale(languageToLoad);
        Locale.setDefault(locale);
        Configuration config = new Configuration();
        config.locale = locale;

        PreferenceManager.getDefaultSharedPreferences(context).edit().putString("lang", "en").commit();
        getActivity().getFragmentManager().beginTransaction()
        .replace(R.id.frame_container, new Word_quiz_game())
        .commit();

    }
    else 
    {
        Toast.makeText(getApplicationContext(),getResources().getString(R.string.Al_Eng_sel), Toast.LENGTH_LONG).show();
    }

    return true;
    default:
        return super.onOptionsItemSelected(item);
}
}
Was it helpful?

Solution

Implemented on main activity of onPrepareOptionMenu and used if condition for every fragment.. But its an alteration still dint get ans for my question calling onPrepareOptionMenu of Fragment. Anyways thanks everyone for your reply

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top