我的应用程序当前直接启动到布局中,并且 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): 致命异常: main 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): at 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): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737 ) 08-31 14:15:47.120: E/AndroidRuntime(12326): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 08-31 14:15:47.120: E/AndroidRuntime(12326 ):在 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 ): 在 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)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 )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 )
我想在这里强调一点,改变如此微小的东西不应该导致如此严重的错误,而且无论我从这种方法中得到什么,我都会收到错误。