Android HomeActivity.java上的空指针异常
我在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
频道用户名
它被放置在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>
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
之前,您正在将主题与NoTitleBartheme.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完成后,我只能在debug08-1903:20:26.697:D/AndroidRuntime(1861)中看到这一行:正在关闭VM
。这对我不起作用。完成此操作后,我再次收到相同的stacktrace错误。我在此行收到一个空指针异常getActionBar()。setDisplayShowTitleEnabled(false)
@NarutoShupident如果您需要在家庭活动中使用操作栏,则必须删除此安卓:主题=“@android:style/theme.Black.NoTitleBar.Fullscreen”从清单文件。是的,我尝试了你所说的。删除该行后,我没有得到该异常。但我没有从频道用户名获得视频。输出显示空白,您需要检查您的响应和url是否有数据。检查您传递的视频id是否为空,以及您传递的所有内容的响应和url。如果其中任何一个为空,则无法获取数据。