以下是我的整个活动, 基本上我只传递两个意图,一个发送到textview,另一个作为标题。 然后我在下面有一个切换全屏功能,100%工作。
我似乎无法弄清楚问题所在。但是我最近做了一些重大更改,之后当我尝试时,活动无法启动,应用程序崩溃。
我有很多活动,我现在发现Eclipse为菜单文件夹中的每个活动创建了settings_menu布局。除了这一项活动外,我不需要使用它们。 假设我总共有15个活动,我删除了除此之外的所有其他活动的14个XML设置菜单文件(Xtxt)。
但在删除所有这些之后,该应用仍然有效。现在我对设置内容进行了一些更改,只需单击菜单按钮时显示的文本。
我似乎无法确定问题。因此,下面是我的整个活动,并且低于该错误的LogCat输出。
public class Xtxt extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView textView = (TextView) findViewById(R.id.xxtt);
setContentView(R.layout.xtxt);
toggleFullscreen(true);
Intent intent = getIntent();
String svar1 = intent.getExtras().getString("a");
String svar2 = intent.getExtras().getString("b");
this.setTitle(svar2);
textView.setText(svar1);
}
private void toggleFullscreen(boolean fullscreen) {
WindowManager.LayoutParams attrs = getWindow().getAttributes();
if (fullscreen) {
attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
} else {
attrs.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN;
}
getWindow().setAttributes(attrs);
}
}
这是LogCat:
08-19 13:22:20.398: E/ActivityThread(31873): Failed to find provider info for com.google.plus.platform
08-19 13:22:20.406: E/AndroidRuntime(31873): FATAL EXCEPTION: main
08-19 13:22:20.406: E/AndroidRuntime(31873): java.lang.RuntimeException: Unable to start activity ComponentInfo{x.abcd/x.abcd.Xtxt}: java.lang.NullPointerException
08-19 13:22:20.406: E/AndroidRuntime(31873): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2077)
08-19 13:22:20.406: E/AndroidRuntime(31873): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2104)
08-19 13:22:20.406: E/AndroidRuntime(31873): at android.app.ActivityThread.access$600(ActivityThread.java:134)
08-19 13:22:20.406: E/AndroidRuntime(31873): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1247)
08-19 13:22:20.406: E/AndroidRuntime(31873): at android.os.Handler.dispatchMessage(Handler.java:99)
08-19 13:22:20.406: E/AndroidRuntime(31873): at android.os.Looper.loop(Looper.java:154)
08-19 13:22:20.406: E/AndroidRuntime(31873): at android.app.ActivityThread.main(ActivityThread.java:4624)
08-19 13:22:20.406: E/AndroidRuntime(31873): at java.lang.reflect.Method.invokeNative(Native Method)
08-19 13:22:20.406: E/AndroidRuntime(31873): at java.lang.reflect.Method.invoke(Method.java:511)
08-19 13:22:20.406: E/AndroidRuntime(31873): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:809)
08-19 13:22:20.406: E/AndroidRuntime(31873): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:576)
08-19 13:22:20.406: E/AndroidRuntime(31873): at dalvik.system.NativeStart.main(Native Method)
08-19 13:22:20.406: E/AndroidRuntime(31873): Caused by: java.lang.NullPointerException
08-19 13:22:20.406: E/AndroidRuntime(31873): at x.abcd.Xtxt.onCreate(Xtxt.java:27)
08-19 13:22:20.406: E/AndroidRuntime(31873): at android.app.Activity.performCreate(Activity.java:4479)
08-19 13:22:20.406: E/AndroidRuntime(31873): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1050)
08-19 13:22:20.406: E/AndroidRuntime(31873): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2041)
08-19 13:22:20.406: E/AndroidRuntime(31873): ... 11 more
我尝试撤消删除,甚至在恢复那些删除的菜单文件后,我似乎仍然有这个奇怪的Null指针错误。我错过了什么吗?
怎么了?
请帮助。
答案 0 :(得分:5)
在初始化视图之前,您的setContentView
应该先出现。
替换此
TextView textView = (TextView) findViewById(R.id.xxtt);
setContentView(R.layout.xtxt);
通过
setContentView(R.layout.xtxt);
TextView textView = (TextView) findViewById(R.id.xxtt);
onCreate
中的
您可以findViewById
设置为活动的当前视图层次结构。由于您尚未将布局设置为活动,因此findViewById
失败。由于这个原因,你可能会得到NUllPointerException
。
编辑:
最好在onCreate
中初始化您的观点,因为在活动的生命周期内调用一次。
从文档引用
http://developer.android.com/reference/android/app/Activity.html
onCreate(Bundle)
是您初始化活动的地方。最重要的是,在这里,您通常会使用定义UI的布局资源调用setContentView(int)
,并使用findViewById(int)
检索该UI中需要以编程方式进行交互的小部件。
答案 1 :(得分:0)
TextView textView = (TextView) findViewById(R.id.xxtt);
setContentView(R.layout.xtxt);
- >
setContentView(R.layout.xtxt);
TextView textView = (TextView) findViewById(R.id.xxtt);