Android 不幸的是,myApp在尝试覆盖onStart时已停止
我对安卓非常陌生。 我试图研究生命周期方法。 试图重写onStart方法,但使应用程序停止时出错。 我可以发现它是由NullPointerException引起的,但我无法确定它是由哪个变量引起的。 请帮忙, 这是我的密码Android 不幸的是,myApp在尝试覆盖onStart时已停止,android,Android,我对安卓非常陌生。 我试图研究生命周期方法。 试图重写onStart方法,但使应用程序停止时出错。 我可以发现它是由NullPointerException引起的,但我无法确定它是由哪个变量引起的。 请帮忙, 这是我的密码 public class MainActivity extends Activity { TextView mStart; int iStart=0; @Override protected void onCreate(Bundle savedInstanceState)
public class MainActivity extends Activity {
TextView mStart;
int iStart=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mStart=(TextView)findViewById(R.id.sStart);
setContentView(R.layout.activity_main);
}
public void onStart()
{
super.onStart();
iStart++;
mStart.setText(iStart);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
这是日志
03-08 07:08:05.216: E/AndroidRuntime(1604): FATAL EXCEPTION: main
03-08 07:08:05.216: E/AndroidRuntime(1604): Process: course.android.myfirstapp, PID: 1604
03-08 07:08:05.216: E/AndroidRuntime(1604): java.lang.RuntimeException: Unable to start activity ComponentInfo{course.android.myfirstapp/course.android.myfirstapp.MainActivity}: java.lang.NullPointerException
03-08 07:08:05.216: E/AndroidRuntime(1604): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2176)
03-08 07:08:05.216: E/AndroidRuntime(1604): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2226)
03-08 07:08:05.216: E/AndroidRuntime(1604): at android.app.ActivityThread.access$700(ActivityThread.java:135)
03-08 07:08:05.216: E/AndroidRuntime(1604): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1397)
03-08 07:08:05.216: E/AndroidRuntime(1604): at android.os.Handler.dispatchMessage(Handler.java:102)
03-08 07:08:05.216: E/AndroidRuntime(1604): at android.os.Looper.loop(Looper.java:137)
03-08 07:08:05.216: E/AndroidRuntime(1604): at android.app.ActivityThread.main(ActivityThread.java:4998)
03-08 07:08:05.216: E/AndroidRuntime(1604): at java.lang.reflect.Method.invokeNative(Native Method)
03-08 07:08:05.216: E/AndroidRuntime(1604): at java.lang.reflect.Method.invoke(Method.java:515)
03-08 07:08:05.216: E/AndroidRuntime(1604): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
03-08 07:08:05.216: E/AndroidRuntime(1604): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
03-08 07:08:05.216: E/AndroidRuntime(1604): at dalvik.system.NativeStart.main(Native Method)
03-08 07:08:05.216: E/AndroidRuntime(1604): Caused by: java.lang.NullPointerException
03-08 07:08:05.216: E/AndroidRuntime(1604): at course.android.myfirstapp.MainActivity.onStart(MainActivity.java:26)
03-08 07:08:05.216: E/AndroidRuntime(1604): at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1171)
03-08 07:08:05.216: E/AndroidRuntime(1604): at android.app.Activity.performStart(Activity.java:5253)
03-08 07:08:05.216: E/AndroidRuntime(1604): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2149)
03-08 07:08:05.216: E/AndroidRuntime(1604): ... 11 more
在setContentView()
之后,只有视图可用。否则其null
更改这些行的顺序
mStart=(TextView)findViewById(R.id.sStart);
setContentView(R.layout.activity_main);
进入
在这一行
mStart.setText(iStart);
此处iStart
作为资源id
。因此它将抛出ResourceNotFoundException
。将该行更改为
mStart.setText(""+iStart);
在
onCreate()
中,在调用setContentView()之前分配mStart
。因此mStart
将为null
。使用setContentView
对视图进行膨胀后,需要调用findViewById
,调用之前,无法找到任何UI元素的ID
setContentView(R.layout.activity_main)
方法。所以从
mStart=(TextView)findViewById(R.id.sStart);
setContentView(R.layout.activity_main);
到
您还必须从
mStart.setText(iStart);
到
setContentView(R.layout.activity_main);
mStart=(TextView)findViewById(R.id.sStart);
mStart.setText(iStart);
mStart.setText(iStart+"");