启动一个Activity后的NullPointerException(在android.content.ComponentName。<init>(ComponentName.java:78))</init>

时间:2014-04-18 10:40:30

标签: android android-intent nullpointerexception

我在这个上摸不着头脑,不知道该怎么做。在我开始活动后,我收到了一个N​​ullPointerException报告,但不是所有时间。任何想法可能会发生什么?

这是Google报告的堆栈跟踪。请注意onItemClick()调用startIntent,并且某处发生NullPointerException。

java.lang.NullPointerException
at android.content.ComponentName.<init>(ComponentName.java:78)
at android.content.Intent.<init>(Intent.java:4180)
at com.kd7uiy.hamfinder.al.onItemClick(Unknown Source)
at android.widget.AdapterView.performItemClick(AdapterView.java:308)
at android.widget.AbsListView.performItemClick(AbsListView.java:1478)
at android.widget.AbsListView$PerformClick.run(AbsListView.java:3480)
at android.widget.AbsListView$3.run(AbsListView.java:4823)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5356)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
at dalvik.system.NativeStart.main(Native Method)

这是代码。

public MainNavigationDrawerAdapter(Context context, FragmentManager fragMan,int locLogActivity) {
    mContext=context;
    mFragMan=fragMan;
    mTitle=context.getString(locLogActivity);
    mHashMap=new HashMap<String,Class<?>>();
    addToMap(R.string.upgrade_activity,ManageAddOnPurchaseActivity.class);
    addToMap(R.string.qth_map_activity,QthMapActivity.class);
    addToMap(R.string.export_to_adif,WriteADIF.class);
    mAdapter = new ArrayAdapter<String> (context,R.layout.drawer_list_item);
    for (String key:mHashMap.keySet()) {
        mAdapter.add(key);
    }
}

private void addToMap(int titleResource, Class<?> theClass) {
    String title=mContext.getString(titleResource);
    if (!mTitle.equals(title)) {
        mHashMap.put(title,theClass);
    }
}

@Override
public void onItemClick(AdapterView<?> adapter, View view, int position, long id) {
    Intent intent=new Intent(mContext,mHashMap.get(((TextView)view).getText()));
    mContext.startActivity(intent);
}

1 个答案:

答案 0 :(得分:3)

您的NPE似乎来自Intent的第二个参数,即null

这是由null返回的HashMap值引起的,因为您使用getText()访问的密钥没有关联值,或者与null关联。< / p>

您点击的view是什么?确保您将该视图的文字放在HashMap

更新:点击列表标题时可能会出现问题。检查您是否有标题。