0

下面是我的整个活动,基本上我只是传递了两个意图,将一个发送到 textview,并将另一个设置为标题。然后我有一个切换全屏功能,它可以 100% 工作。

我似乎无法弄清楚问题所在。但我最近确实做了一些重大更改,之后当我尝试时,活动无法启动并且应用程序崩溃。

我有很多活动,我刚刚发现 Eclipse 为菜单文件夹中的每个活动创建了 settings_menu 布局。除了在这一项活动中,我不需要使用它们。假设我总共有 15 个活动,我删除了除这个 (Xtxt) 之外的所有其他活动的 14 个 XML 设置菜单文件。

但删除所有这些后,该应用程序仍然有效。现在我对设置进行了一些更改,只是单击菜单按钮时出现的文本。

我似乎无法确定问题所在。所以,下面是我的整个活动,下面是错误的 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

我尝试撤消删除,即使在恢复那些已删除的菜单文件之后,我似乎仍然有这个奇怪的空指针错误。我错过了什么吗?

怎么了 ?

请帮忙。

4

2 回答 2

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)是您初始化活动的地方。最重要的是,您通常会在此处调用setContentView(int)定义您的 UI 的布局资源,并使用findViewById(int)它来检索您需要以编程方式与之交互的 UI 中的小部件。

于 2013-08-19T07:56:20.927 回答
0
    TextView textView = (TextView) findViewById(R.id.xxtt);
    setContentView(R.layout.xtxt);

->

    setContentView(R.layout.xtxt); 
    TextView textView = (TextView) findViewById(R.id.xxtt);
于 2013-08-19T08:09:00.543 回答