更改onCreate会导致应用在启动时崩溃;想要有不同的起始布局

时间:2013-08-31 12:47:36

标签: java android layout oncreate

我的应用程序当前直接引导到布局中,而onCreate方法用于控制该视图,例如响应按钮按下等。但是我希望转到不同的初始布局。我最初只是将所有原始控件功能移动到一个新方法,并更改setContentView(R.layout.main);以匹配新视图,但这会导致崩溃。经过一些摆弄后,我发现无论我在这种方法中改变什么,我都会崩溃,即使在评论小方法调用时也是如此。

这是我的onCreate方法:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Intent checkTTSIntent = new Intent();
    checkTTSIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
    startActivityForResult(checkTTSIntent, MY_DATA_CHECK_CODE);

    final ActionBar actionBar = getActionBar();
    actionBar.setDisplayShowTitleEnabled(true);
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);

    actionBar.setListNavigationCallbacks(new ArrayAdapter<String>(actionBar.getThemedContext(),
        android.R.layout.simple_list_item_1,
        android.R.id.text1, new String[] {
            getString(R.string.lanc),
            getString(R.string.lanb),
            getString(R.string.lana), 
        }), this);

    final Intent intent = new Intent("com.google.zxing.client.android.SCAN");

    latituteField = (TextView) findViewById(R.id.latitude);
    longitudeField = (TextView) findViewById(R.id.longtitude);
    orgText = (TextView) findViewById(R.id.orgText);
    accpointnameText = (TextView) findViewById(R.id.accpointnameText);
    floorText = (TextView) findViewById(R.id.floorText);

    setlocation();

    installTTSIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
    startActivity(installTTSIntent);

    Button save = (Button) findViewById(R.id.save);
    save.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            System.out.println("attempting get from input fields");
            accpointText = (EditText) findViewById(R.id.accpointText);
            passwordText = (EditText) findViewById(R.id.passwordText);

            IDin = accpointText.getText().toString();
            System.out.println(IDin);
            Passwordin = passwordText.getText().toString();
            System.out.println(Passwordin);

            System.out.println("so far");
            JSONstate = false;

            new JSONDownloader().execute("https://apps.taskpixie.com/arSettings/?id="+IDin+"&password="+Passwordin+"");
        }
    });
    Button cancel = (Button) findViewById(R.id.cancel);
    cancel.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            startActivityForResult(intent, 0);
        }
    }); 
}

为什么我的应用程序崩溃无论我删除了什么?如何更改初始布局?

如果您需要更多数据我可以提供,请提前感谢。


例如,注释掉setlocation();会导致日志猫吐出

  

08-31 14:15:47.120:E / AndroidRuntime(12326):致命异常:主要   08-31 14:15:47.120:E / AndroidRuntime(12326):java.lang.RuntimeException:无法恢复活动{com.example.bilisattendancerecorder / com.example.bilisattendancerecorder.Main}:java.lang.NullPointerException   08-31 14:15:47.120:E / AndroidRuntime(12326):在android.app.ActivityThread.performResumeActivity(ActivityThread.java:2790)   08-31 14:15:47.120:E / AndroidRuntime(12326):在android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2819)   08-31 14:15:47.120:E / AndroidRuntime(12326):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2266)   08-31 14:15:47.120:E / AndroidRuntime(12326):在android.app.ActivityThread.access $ 600(ActivityThread.java:141)   08-31 14:15:47.120:E / AndroidRuntime(12326):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1256)   08-31 14:15:47.120:E / AndroidRuntime(12326):在android.os.Handler.dispatchMessage(Handler.java:99)   08-31 14:15:47.120:E / AndroidRuntime(12326):在android.os.Looper.loop(Looper.java:137)   08-31 14:15:47.120:E / AndroidRuntime(12326):在android.app.ActivityThread.main(ActivityThread.java:5103)   08-31 14:15:47.120:E / AndroidRuntime(12326):at java.lang.reflect.Method.invokeNative(Native Method)   08-31 14:15:47.120:E / AndroidRuntime(12326):at java.lang.reflect.Method.invoke(Method.java:525)   08-31 14:15:47.120:E / AndroidRuntime(12326):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:737)   08-31 14:15:47.120:E / AndroidRuntime(12326):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)   08-31 14:15:47.120:E / AndroidRuntime(12326):at dalvik.system.NativeStart.main(Native Method)   08-31 14:15:47.120:E / AndroidRuntime(12326):引起:java.lang.NullPointerException   08-31 14:15:47.120:E / AndroidRuntime(12326):at com.example.bilisattendancerecorder.Main.onResume(Main.java:299)   08-31 14:15:47.120:E / AndroidRuntime(12326):在android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1192)   08-31 14:15:47.120:E / AndroidRuntime(12326):在android.app.Activity.performResume(Activity.java:5211)   08-31 14:15:47.120:E / AndroidRuntime(12326):在android.app.ActivityThread.performResumeActivity(ActivityThread.java:2780)

我想在此强调,改变一些如此微小的东西不应该导致如此严重的错误,并且无论我从这种方法中拿走什么,我都会收到错误。

0 个答案:

没有答案