Hello again,
I'm having problems getting my preferences activity to start a new
activity when a region is selected by the user.

the call comes from a submenu:

    public boolean onOptionsItemSelected(MenuItem item){
                        pob = new Prefs();// public Prefs pob; in field vars
                switch (item.getItemId()){
    //-------------------------------------Options
menu----------------------------------------
                case R.id.about:
                        //Toast.makeText(this, "About menu", 
Toast.LENGTH_SHORT).show();
                        //showAbout();
                        return true;
                case R.id.locale:
                        //Toast.makeText(this, "Locale menu", 
Toast.LENGTH_SHORT).show();
                        return true;

    //-----Sub menu----------
                case R.id.uk_item://<-- USING THIS BLOCK FOR CALL
                Toast.makeText(this, "UK selected in UsFM",
Toast.LENGTH_SHORT).show();// this is ok
                        Log.i(LogTag, "UK selected");
                        if(pob.isUk&&item.isChecked()){
                                item.setChecked(true);
                        }else item.setChecked(false);
                        pob.changeLocale(this,"uk");
                        //finish();
                        return true;
                case R.id.us_item:
                        //Toast.makeText(this, "US already selected",
Toast.LENGTH_SHORT).show();
                        if(pob.isUs&&item.isChecked()){
                                item.setChecked(true);
                        }
                        else item.setChecked(false);
                        pob.setRegion("us");
                        pob.getRegion(this);
                        finish();
                        return true;
                case R.id.eu_item:
                        Toast.makeText(this, "EU selected", 
Toast.LENGTH_SHORT).show();
                        if(pob.isEu&&item.isChecked()){
                                item.setChecked(true);
        //                      pob.changeLocale("eu");
                        }else item.setChecked(false);
                        return true;
                default :
                        return super.onOptionsItemSelected(item);

                        }


It calls this method in the Prefs class:

    public void changeLocale(Context cxt,String locale){
                try{
                String l=locale;
                 if(l.equals("uk")){
                        this.isUk=true;
                        Log.i(Log_tag,l);
                        //Toast.makeText(this, "UK region selected in
Prefs",Toast.LENGTH_SHORT).show();
                        Intent intent = new Intent(cxt, Uk.class);
                        Log.i(Log_tag,"intent run");
                        startActivity(intent);// <--- ERROR HERE
                }else if(l.equals("eu")){
                        this.isEu=true;
                        //Toast.makeText(this, "EU region selected",
Toast.LENGTH_SHORT).show();
                        Intent intent = new Intent(cxt, Eu.class);
                        startActivity(intent);
                }else if(l.equals("us")){
                        this.isUs=true;
                        //Toast.makeText(this, "Us region selected",
Toast.LENGTH_SHORT).show();
                        Intent intent = new Intent(cxt, Us.class);
                        startActivity(intent);
                }else if (l.equals("")){
                        Log.i(Log_tag,"no locale passed in");
                        finish();
                }
                }catch (NullPointerException e){
                        e.printStackTrace();
                        Log.i(Log_tag, "Null Pointer Error in 
changeLocale()"+e);
                        finish();
                }
        }

The stack trace is:

    05-26 13:53:05.880: WARN/System.err(478):
java.lang.NullPointerException
    05-26 13:53:05.890: WARN/System.err(478):     at
android.app.Activity.startActivityForResult(Activity.java:2661)
    05-26 13:53:05.900: WARN/System.err(478):     at
android.app.Activity.startActivity(Activity.java:2705)
    05-26 13:53:05.900: WARN/System.err(478):     at
com.silifeform.android.Prefs.changeLocale(Prefs.java:70)
    05-26 13:53:05.900: WARN/System.err(478):     at
com.silifeform.android.Us.onOptionsItemSelected(UsFuelMoney.java:347)
    05-26 13:53:05.910: WARN/System.err(478):     at
android.app.Activity.onMenuItemSelected(Activity.java:2096)
    05-26 13:53:05.910: WARN/System.err(478):     at
com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:
825)
    05-26 13:53:05.920: WARN/System.err(478):     at
com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:
139)
05-26 13:53:05.920: WARN/System.err(478):     at
com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:
813)
05-26 13:53:05.920: WARN/System.err(478):     at
com.android.internal.view.menu.MenuDialogHelper.onClick(MenuDialogHelper.java:
120)

Someone very kindly made some suggestions regarding instantiating the
prefs object in onOptionsItemSelected(), but as i am new to both
android and java I don't know any other ways to instatiate an object
other than the 2 I have already tried.

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to