startActivityForResult空指针异常上下文?

问题描述

| 冒着赢得StackOverloads \“年度最佳女低音奖”的风险,我仍然对此有疑问。我对此的其他帖子是: 使用Intent的Null指针异常 Android SharedPreferences中的NullPointerException 如何将用户引导至正确的活动? 该调用来自一个子菜单:
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);

        }
它在Prefs类中调用此方法:
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\",Eu.class);
        startActivity(intent);
    }else if(l.equals(\"us\")){
        this.isUs=true;
        //Toast.makeText(this,\"Us region selected\",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();
    }
}
堆栈跟踪为:
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):在com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:813) 05-26 13:53:05.920:WARN / System.err(478):在com.android.internal.view.menu.MenuDialogHelper.onClick(MenuDialogHelper.java:120) 史蒂芬(Stephan)非常友善地提出了一些有关实例化
onOptionsItemSelected()
中的prefs对象的建议,但是由于我对android和java都是陌生的,除了我已经尝试过的两个实例之外,我不知道其他任何实例化对象的方法。 抱歉,如果我一次又一次地问同样的问题!     

解决方法

我通常这样做:
Intent intent = new Intent(this,Eu.class);
startActivity(intent);
如果该位给出空指针,则意味着上下文/此为空或Eu.class为空。尝试以调试模式运行它,以检查两者是否都为空值。 祝好运!     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...