Android:在onListItemClick运行时错误中启动意图

Android:在onListItemClick运行时错误中启动意图,android,android-intent,menu,manifest,Android,Android Intent,Menu,Manifest,我正在做一个类似facebook菜单的广播项目。当菜单上的第一项被点击时,应用程序应该运行myMain类,我在该类中获得无线电流。 但我最近在LogCat上发现了一个错误: 07-25 22:52:12.843: E/AndroidRuntime(9553): FATAL EXCEPTION: main 07-25 22:52:12.843: E/AndroidRuntime(9553): java.lang.NullPointerException 07-25 22:52:12.843: E/

我正在做一个类似facebook菜单的广播项目。当菜单上的第一项被点击时,应用程序应该运行myMain类,我在该类中获得无线电流。 但我最近在LogCat上发现了一个错误:

07-25 22:52:12.843: E/AndroidRuntime(9553): FATAL EXCEPTION: main
07-25 22:52:12.843: E/AndroidRuntime(9553): java.lang.NullPointerException
07-25 22:52:12.843: E/AndroidRuntime(9553):     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1374)
07-25 22:52:12.843: E/AndroidRuntime(9553):     at android.app.Activity.startActivityForResult(Activity.java:2827)
07-25 22:52:12.843: E/AndroidRuntime(9553):     at android.support.v4.app.FragmentActivity.startActivityFromFragment(FragmentActivity.java:833)
07-25 22:52:12.843: E/AndroidRuntime(9553):     at android.support.v4.app.Fragment.startActivity(Fragment.java:856)
07-25 22:52:12.843: E/AndroidRuntime(9553):     at com.korovyansk.android.sample.slideout.MenuFragment.onListItemClick(MenuFragment.java:28)
07-25 22:52:12.843: E/AndroidRuntime(9553):     at android.support.v4.app.ListFragment$2.onItemClick(ListFragment.java:58)
07-25 22:52:12.843: E/AndroidRuntime(9553):     at android.widget.AdapterView.performItemClick(AdapterView.java:284)
07-25 22:52:12.843: E/AndroidRuntime(9553):     at android.widget.ListView.performItemClick(ListView.java:3763)
07-25 22:52:12.843: E/AndroidRuntime(9553):     at android.widget.AbsListView$PerformClick.run(AbsListView.java:1936)
07-25 22:52:12.843: E/AndroidRuntime(9553):     at android.os.Handler.handleCallback(Handler.java:587)
07-25 22:52:12.843: E/AndroidRuntime(9553):     at android.os.Handler.dispatchMessage(Handler.java:92)
07-25 22:52:12.843: E/AndroidRuntime(9553):     at android.os.Looper.loop(Looper.java:123)
07-25 22:52:12.843: E/AndroidRuntime(9553):     at android.app.ActivityThread.main(ActivityThread.java:3687)
07-25 22:52:12.843: E/AndroidRuntime(9553):     at java.lang.reflect.Method.invokeNative(Native Method)
07-25 22:52:12.843: E/AndroidRuntime(9553):     at java.lang.reflect.Method.invoke(Method.java:507)
07-25 22:52:12.843: E/AndroidRuntime(9553):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
07-25 22:52:12.843: E/AndroidRuntime(9553):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
07-25 22:52:12.843: E/AndroidRuntime(9553):     at dalvik.system.NativeStart.main(Native Method)
菜单活动类别:

package com.korovyansk.android.sample.slideout;

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.KeyEvent;

import com.korovyansk.android.slideout.SlideoutHelper;

public class MenuActivity extends FragmentActivity{

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mSlideoutHelper = new SlideoutHelper(this);
        mSlideoutHelper.activate();
        getSupportFragmentManager().beginTransaction().add(com.korovyansk.android.slideout.R.id.slideout_placeholder, new MenuFragment(), "menu").commit();
        mSlideoutHelper.open();
    }


    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if(keyCode == KeyEvent.KEYCODE_BACK){
            mSlideoutHelper.close();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }


    public SlideoutHelper getSlideoutHelper(){
        return mSlideoutHelper;
    }

    private SlideoutHelper mSlideoutHelper;

}
MenuFragment类:

package com.korovyansk.android.sample.slideout;

import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class MenuFragment extends ListFragment {

    Intent intent; 

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        setListAdapter(new ArrayAdapter<String>(getActivity(),
                android.R.layout.simple_list_item_1, new String[] { "Canlı Yayın", "Haberler", "Etkinlikler", " Fourth", " Fifth", " Sixth"}));
        getListView().setCacheColorHint(0);
    }

    @Override
    public void onListItemClick(ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);
        if(position == 1)
            intent = new Intent(getActivity().getApplicationContext(), myMain.class);
            startActivity(intent);
        ((MenuActivity)getActivity()).getSlideoutHelper().close();
    }


}
由于错误与意图有关,因此清单如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.korovyansk.android.sample.slideout"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="7"
        android:targetSdkVersion="11" />

    <application android:theme="@style/AppTheme"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:label="Simple Sample"
            android:name=".SampleActivity" >
            <intent-filter >
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:label="@string/app_name"
            android:name=".MenuActivity"
            android:theme="@style/MenuTheme" >
        </activity>
        <activity android:name=".SampleActionbarActivity"
            android:label="Sample With Actionbar">
            <intent-filter >
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".myMain"
            android:label="@string/app_name">
        </activity>
    </application>
</manifest>

假设此行是
菜单片段的第28行

intent = new Intent(getActivity().getApplicationContext(), myMain.class);
换成

intent = new Intent(getActivity(), myMain.class);

Activity
有自己的
上下文
因此,通过调用
getActivity()
您可以获得它的
上下文

尝试删除
.getApplicationContext()
创建您的
意图的地方
@codeMagic我应该写什么。getApplicationContext()?因为没有任何意图(c类)的构造函数,所以欢迎您。请通过单击复选标记接受正确答案,以便更轻松地帮助他人
intent = new Intent(getActivity().getApplicationContext(), myMain.class);
intent = new Intent(getActivity(), myMain.class);