Android:在onListItemClick运行时错误中启动意图
我正在做一个类似facebook菜单的广播项目。当菜单上的第一项被点击时,应用程序应该运行myMain类,我在该类中获得无线电流。 但我最近在LogCat上发现了一个错误: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/
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);