Android HomeActivity.java上的空指针异常

Android HomeActivity.java上的空指针异常,android,nullpointerexception,stack-trace,Android,Nullpointerexception,Stack Trace,我在HomeActivity.java上收到一个空指针异常。我无法 能够找到错误 我试图通过频道用户名 它被放置在strings.xml中 LogCat: D/AndroidRuntime(1695): Shutting down VM E/AndroidRuntime(1695): FATAL EXCEPTION: main E/AndroidRuntime(1695): Process: com.grace.view, PID: 1695 E/AndroidRuntime(1695): j

我在HomeActivity.java上收到一个空指针异常。我无法 能够找到错误

  • 我试图通过
    频道用户名
    它被放置在
    strings.xml

  • LogCat:

    D/AndroidRuntime(1695): Shutting down VM
    E/AndroidRuntime(1695): FATAL EXCEPTION: main
    E/AndroidRuntime(1695): Process: com.grace.view, PID: 1695
    E/AndroidRuntime(1695): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.grace.view/com.grace.view.HomeActivity}: java.lang.NullPointerException
    E/AndroidRuntime(1695):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
    E/AndroidRuntime(1695):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
    E/AndroidRuntime(1695):     at android.app.ActivityThread.access$800(ActivityThread.java:135)
    E/AndroidRuntime(1695):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
    E/AndroidRuntime(1695):     at android.os.Handler.dispatchMessage(Handler.java:102)
    E/AndroidRuntime(1695):     at android.os.Looper.loop(Looper.java:136)
    E/AndroidRuntime(1695):     at android.app.ActivityThread.main(ActivityThread.java:5017)
    E/AndroidRuntime(1695):     at java.lang.reflect.Method.invokeNative(Native Method)
    E/AndroidRuntime(1695):     at java.lang.reflect.Method.invoke(Method.java:515)
    E/AndroidRuntime(1695):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
    E/AndroidRuntime(1695):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
    E/AndroidRuntime(1695):     at dalvik.system.NativeStart.main(Native Method)
    E/AndroidRuntime(1695): Caused by: java.lang.NullPointerException
    E/AndroidRuntime(1695):     at com.grace.view.HomeActivity.onCreate(HomeActivity.java:35)
    E/AndroidRuntime(1695):     at android.app.Activity.performCreate(Activity.java:5231)
    E/AndroidRuntime(1695):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
    E/AndroidRuntime(1695):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
    E/AndroidRuntime(1695):     ... 11 more
    
    <string name="action_settings">Settings</string>
        <string name="hello_world">Hello world!</string>
        <string-array name="channel_name">
            <item >The Father House</item>
    
        </string-array>
        <string-array name="channel_username">
            <item >TheJesudian</item>
    
        </string-array>
    
    HomeActivity.java:

     public class HomeActivity extends FragmentActivity implements ActionBar.OnNavigationListener, VideoListFragment.OnVideoSelectedListener{
    
        // create object of ActionBar and VideoListFragment
        ActionBar actionBar;
        VideoListFragment videoListFrag;
    
        int selectedItem;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            setContentView(R.layout.activity_home);
            actionBar=getActionBar();
    
          // add channel list array to actionbar spinner
           Context context = getActionBar().getThemedContext(); ----->Null pointer Exception
           ArrayAdapter<CharSequence> list = ArrayAdapter.createFromResource(context, R.array.channel_name,android.R.layout.simple_spinner_item);
           list.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    
         // remove actionbar title and add spinner to actionbar
    
            getActionBar().setDisplayShowTitleEnabled(false);
            getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
         // getActionBar().setListNavigationCallbacks(list, this);
    
        }
    
        // create option menu
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.home, menu);
            return true;
        }
    
    
        @TargetApi(Build.VERSION_CODES.HONEYCOMB)
        @Override
        public boolean onNavigationItemSelected(int itemPosition, long itemId) {
            // TODO Auto-generated method stub
    
            selectedItem = itemPosition;
    
            // create object of VideoListFragment and send data position to that fragment
            videoListFrag = new VideoListFragment();
            Bundle bundle = new Bundle();
            bundle.putInt("position", itemPosition);
            videoListFrag.setArguments(bundle);
    
            // call video list fragment with new data
            getFragmentManager()
            .beginTransaction()
            .replace(R.id.content_frame, videoListFrag, "VIDEO_LIST_FRAGMENT")
            .commit();
            return true;
        }
    
        @Override
        public void onVideoSelected(String ID) {
            // TODO Auto-generated method stub
    
            // call player page to play selected video
            Intent i = new Intent(HomeActivity.this, PlayerActivity.class);
            i.putExtra("id", ID);
            startActivity(i);
    
        }
    
    }
    
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.grace.view"
        android:versionCode="6"
        android:versionName="1.3.2" >
    
        <uses-sdk
            android:minSdkVersion="14"
            android:targetSdkVersion="19" />
        <uses-permission android:name="android.permission.INTERNET"/>
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    
        <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@android:style/Theme.Holo.Light.DarkActionBar" >
            <activity
                android:name="com.grace.view.HomeActivity"
                android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"           
                android:screenOrientation="portrait"
                android:noHistory="true" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
    
            <activity 
                android:name="com.grace.view.PlayerActivity" />
    
        </application>
    
    </manifest>
    
    公共类HomeActivity扩展碎片Activity实现ActionBar.OnNavigationListener、VideoListFragment.OnVideoSelectedListener{
    //创建ActionBar和VideoListFragment的对象
    ActionBar ActionBar;
    视频列表片段;
    int-selectedItem;
    @凌驾
    创建时受保护的void(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);
    actionBar=getActionBar();
    //将频道列表数组添加到actionbar微调器
    上下文上下文=getActionBar().getThemedContext();------>空指针异常
    ArrayAdapter list=ArrayAdapter.createFromResource(上下文,R.array.channel\u名称,android.R.layout.simple\u微调器\u项);
    list.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
    //删除actionbar标题并将微调器添加到actionbar
    getActionBar().setDisplayShowTitleEnabled(false);
    getActionBar().setNavigationMode(ActionBar.NAVIGATION\u MODE\u列表);
    //getActionBar().setListNavigationCallbacks(列表,此);
    }
    //创建选项菜单
    公共布尔onCreateOptions菜单(菜单){
    getMenuInflater().充气(R.menu.home,menu);
    返回true;
    }
    @TargetApi(构建版本代码蜂窝)
    @凌驾
    公共布尔值onNavigationItemSelected(int-itemPosition,long-itemId){
    //TODO自动生成的方法存根
    选择EdItem=itemPosition;
    //创建VideoListFragment的对象并将数据位置发送到该片段
    videoListFrag=新的VideoListFragment();
    Bundle=新Bundle();
    bundle.putInt(“位置”,itemPosition);
    videoListFrag.setArguments(捆绑);
    //使用新数据调用视频列表片段
    getFragmentManager()
    .beginTransaction()
    .替换(R.id.content\u frame,videoListFrag,“VIDEO\u LIST\u FRAGMENT”)
    .commit();
    返回true;
    }
    @凌驾
    已选择公共void onVideoSelected(字符串ID){
    //TODO自动生成的方法存根
    //呼叫播放器页面以播放所选视频
    意向i=新意向(HomeActivity.this、PlayerActivity.class);
    i、 putExtra(“id”,id);
    星触觉(i);
    }
    }
    
    清单:

     public class HomeActivity extends FragmentActivity implements ActionBar.OnNavigationListener, VideoListFragment.OnVideoSelectedListener{
    
        // create object of ActionBar and VideoListFragment
        ActionBar actionBar;
        VideoListFragment videoListFrag;
    
        int selectedItem;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            setContentView(R.layout.activity_home);
            actionBar=getActionBar();
    
          // add channel list array to actionbar spinner
           Context context = getActionBar().getThemedContext(); ----->Null pointer Exception
           ArrayAdapter<CharSequence> list = ArrayAdapter.createFromResource(context, R.array.channel_name,android.R.layout.simple_spinner_item);
           list.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    
         // remove actionbar title and add spinner to actionbar
    
            getActionBar().setDisplayShowTitleEnabled(false);
            getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
         // getActionBar().setListNavigationCallbacks(list, this);
    
        }
    
        // create option menu
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.home, menu);
            return true;
        }
    
    
        @TargetApi(Build.VERSION_CODES.HONEYCOMB)
        @Override
        public boolean onNavigationItemSelected(int itemPosition, long itemId) {
            // TODO Auto-generated method stub
    
            selectedItem = itemPosition;
    
            // create object of VideoListFragment and send data position to that fragment
            videoListFrag = new VideoListFragment();
            Bundle bundle = new Bundle();
            bundle.putInt("position", itemPosition);
            videoListFrag.setArguments(bundle);
    
            // call video list fragment with new data
            getFragmentManager()
            .beginTransaction()
            .replace(R.id.content_frame, videoListFrag, "VIDEO_LIST_FRAGMENT")
            .commit();
            return true;
        }
    
        @Override
        public void onVideoSelected(String ID) {
            // TODO Auto-generated method stub
    
            // call player page to play selected video
            Intent i = new Intent(HomeActivity.this, PlayerActivity.class);
            i.putExtra("id", ID);
            startActivity(i);
    
        }
    
    }
    
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.grace.view"
        android:versionCode="6"
        android:versionName="1.3.2" >
    
        <uses-sdk
            android:minSdkVersion="14"
            android:targetSdkVersion="19" />
        <uses-permission android:name="android.permission.INTERNET"/>
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    
        <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@android:style/Theme.Holo.Light.DarkActionBar" >
            <activity
                android:name="com.grace.view.HomeActivity"
                android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"           
                android:screenOrientation="portrait"
                android:noHistory="true" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
    
            <activity 
                android:name="com.grace.view.PlayerActivity" />
    
        </application>
    
    </manifest>
    
    
    
    strings.xml:

    D/AndroidRuntime(1695): Shutting down VM
    E/AndroidRuntime(1695): FATAL EXCEPTION: main
    E/AndroidRuntime(1695): Process: com.grace.view, PID: 1695
    E/AndroidRuntime(1695): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.grace.view/com.grace.view.HomeActivity}: java.lang.NullPointerException
    E/AndroidRuntime(1695):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
    E/AndroidRuntime(1695):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
    E/AndroidRuntime(1695):     at android.app.ActivityThread.access$800(ActivityThread.java:135)
    E/AndroidRuntime(1695):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
    E/AndroidRuntime(1695):     at android.os.Handler.dispatchMessage(Handler.java:102)
    E/AndroidRuntime(1695):     at android.os.Looper.loop(Looper.java:136)
    E/AndroidRuntime(1695):     at android.app.ActivityThread.main(ActivityThread.java:5017)
    E/AndroidRuntime(1695):     at java.lang.reflect.Method.invokeNative(Native Method)
    E/AndroidRuntime(1695):     at java.lang.reflect.Method.invoke(Method.java:515)
    E/AndroidRuntime(1695):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
    E/AndroidRuntime(1695):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
    E/AndroidRuntime(1695):     at dalvik.system.NativeStart.main(Native Method)
    E/AndroidRuntime(1695): Caused by: java.lang.NullPointerException
    E/AndroidRuntime(1695):     at com.grace.view.HomeActivity.onCreate(HomeActivity.java:35)
    E/AndroidRuntime(1695):     at android.app.Activity.performCreate(Activity.java:5231)
    E/AndroidRuntime(1695):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
    E/AndroidRuntime(1695):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
    E/AndroidRuntime(1695):     ... 11 more
    
    <string name="action_settings">Settings</string>
        <string name="hello_world">Hello world!</string>
        <string-array name="channel_name">
            <item >The Father House</item>
    
        </string-array>
        <string-array name="channel_username">
            <item >TheJesudian</item>
    
        </string-array>
    
    设置
    你好,世界!
    父亲之家
    耶苏迪亚人
    

    任何人都可以帮我。谢谢。

    试试
    requestWindowFeature(Window.FEATURE\u ACTION\u BAR)
    setContentView
    之前,您正在将主题与NoTitleBar
    theme.Black.NoTitleBar.Fullscreen一起使用

    将此添加到您的活动中

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if ( keyCode == KeyEvent.KEYCODE_MENU ) {
            // do nothing
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }   
    

    您需要删除此行

    Context context = getActionBar().getThemedContext(); ----->Null pointer Exception
    
    在适配器类中,只需使用

    ArrayAdapter<CharSequence> list = ArrayAdapter.createFromResource(HomeActivity.this, R.array.channel_name,android.R.layout.simple_spinner_item);
    list.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    
    ArrayAdapter list=ArrayAdapter.createFromResource(HomeActivity.this,R.array.channel\u name,android.R.layout.simple\u微调器\u项);
    list.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
    
    HomeActivity的第35行是哪一行?这一行
    Context-Context=getActionBar().getThemedContext()我在那里也提到过。@stealthjong如何验证它。它显示空指针异常删除
    android:theme=“@android:style/theme.Black.NoTitleBar.Fullscreen”
    这一行来自Manifest.xml文件,然后重试again@stealthjong完成后,我只能在debug
    08-1903:20:26.697:D/AndroidRuntime(1861)中看到这一行:正在关闭VM
    。这对我不起作用。完成此操作后,我再次收到相同的stacktrace错误。我在此行收到一个空指针异常
    getActionBar()。setDisplayShowTitleEnabled(false)
    @NarutoShupident如果您需要在家庭活动中使用操作栏,则必须删除此安卓:主题=“@android:style/theme.Black.NoTitleBar.Fullscreen”从清单文件。是的,我尝试了你所说的。删除该行后,我没有得到该异常。但我没有从频道用户名获得视频。输出显示空白,您需要检查您的响应和url是否有数据。检查您传递的视频id是否为空,以及您传递的所有内容的响应和url。如果其中任何一个为空,则无法获取数据。