emulator和don'中的代码正在崩溃;我不知道为什么。android/java开发新手
我对android和java开发都是新手。我正在尝试建立一个简单的应用程序。目前非常简单,但我似乎无法运行代码。当我在模拟器中运行应用程序时,它会发出一个警报,说我的应用程序已停止 这是我的密码:emulator和don'中的代码正在崩溃;我不知道为什么。android/java开发新手,java,android,android-emulator,Java,Android,Android Emulator,我对android和java开发都是新手。我正在尝试建立一个简单的应用程序。目前非常简单,但我似乎无法运行代码。当我在模拟器中运行应用程序时,它会发出一个警报,说我的应用程序已停止 这是我的密码: package com.example.ultimatescoreclock; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.Window; i
package com.example.ultimatescoreclock;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.Window;
import android.view.WindowManager;
import android.widget.TextView;
import android.os.CountDownTimer;
public class MainActivity extends Activity {
// variables for the clock
byte minRemaining = 0;
byte secRemaining = 0;
long msRemaining = 360000; // six minutes
TextView mainClock = (TextView) findViewById(R.id.clockMain);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
public byte getMinutes(long millisUntilFinished) {
return (byte) (millisUntilFinished / 60000);
}
public void onMainClockClick() {
StringBuilder str = new StringBuilder("");
str.append(minRemaining + ":" + secRemaining);
mainClock.setText(str);
}
}
有人能告诉我我犯了什么愚蠢的错误吗?仅供参考-我的XML文档为R.id.mainClock
TextView设置了onClick属性
mainClock = (TextView) findViewById(R.id.clockMain);
必须将置于setContentView()之后代码>
这是因为您首先必须设置活动
使用的布局,然后才能使用它。正在发生的是您的对象正在被创建,而您的全局变量(mainClock)正在访问一些还不存在的东西,因为onCreate()
尚未被调用
因此更改TextView mainClock=(TextView)findViewById(R.id.clockMain)代码>到
TextView mainClock;
onCreate()应该是这样的
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mainClock = (TextView) findViewById(R.id.clockMain); //finds the clock TextView
}
必须将置于setContentView()之后代码>
这是因为您首先必须设置活动
使用的布局,然后才能使用它。正在发生的是您的对象正在被创建,而您的全局变量(mainClock)正在访问一些还不存在的东西,因为onCreate()
尚未被调用
因此更改TextView mainClock=(TextView)findViewById(R.id.clockMain)代码>到
TextView mainClock;
onCreate()应该是这样的
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mainClock = (TextView) findViewById(R.id.clockMain); //finds the clock TextView
}
-您可以在setContentView()方法之前定义但不初始化视图
-TextView mainClock=(TextView)findViewById(R.id.clockMain)代码>之前的设置内容视图()
导致崩溃。
-它的只有在setContentView()
方法之后,才能将ID分配给视图
,因为直到视图
未初始化
-这就是使用setContentView(…)
的全部意义,它将膨胀XML布局文件,直到您拥有某种膨胀视图,您将无法获得对其任何部分的引用
例如:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mainClock = (TextView) findViewById(R.id.clockMain);
}
-您可以在setContentView()方法之前定义但不初始化视图
-TextView mainClock=(TextView)findViewById(R.id.clockMain)代码>之前的设置内容视图()
导致崩溃。
-它的只有在setContentView()
方法之后,才能将ID分配给视图
,因为直到视图
未初始化
-这就是使用setContentView(…)
的全部意义,它将膨胀XML布局文件,直到您拥有某种膨胀视图,您将无法获得对其任何部分的引用
例如:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mainClock = (TextView) findViewById(R.id.clockMain);
}