不幸的是,myApp在尝试覆盖onStart时停止了

时间:2014-03-08 13:10:43

标签: android

我对android很新。 我正在尝试研究生命周期方法。 试图覆盖onStart方法,但让应用程序停止错误。 我可以发现它是由于NullPointerException但我无法确定它是由哪个变量。 请帮忙, 这是我的代码

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

3 个答案:

答案 0 :(得分:1)

setContentView()视图可用。另外,null这些行的更改顺序

 mStart=(TextView)findViewById(R.id.sStart);
 setContentView(R.layout.activity_main);

   setContentView(R.layout.activity_main);
   mStart=(TextView)findViewById(R.id.sStart);

在这一行

 mStart.setText(iStart);

此处iStart被视为resource id ..所以它会抛出ResourceNotFoundException ..更改该行。

mStart.setText(""+iStart);

答案 1 :(得分:0)

onCreate()中,您在致电mStart之前指定setContentView()。因此mStart将是null。在使用findViewById

对视图进行充气后,您需要致电setContentView

答案 2 :(得分:0)

在调用之前找不到任何UI元素的ID

 setContentView(R.layout.activity_main)

方法。所以从

改变
mStart=(TextView)findViewById(R.id.sStart);

setContentView(R.layout.activity_main);

setContentView(R.layout.activity_main);
mStart=(TextView)findViewById(R.id.sStart);

您还必须从

更改此设置
 mStart.setText(iStart);

  mStart.setText(iStart+"");