Java 由于活动调用,应用程序正在崩溃
我试图通过带有OnClickListener的按钮从MainActivity调用一个活动 第一个活动正在响应并工作,第二个活动不工作并使应用程序崩溃 请帮我找到解决办法 谢谢 代码如下:Java 由于活动调用,应用程序正在崩溃,java,android,Java,Android,我试图通过带有OnClickListener的按钮从MainActivity调用一个活动 第一个活动正在响应并工作,第二个活动不工作并使应用程序崩溃 请帮我找到解决办法 谢谢 代码如下: class Layout{ public Layout(){ btnStopWatch = (Button)findViewById(R.id.btnStopWatch); btnTimer = (Button)findViewById(R.id.btnTimer);
class Layout{
public Layout(){
btnStopWatch = (Button)findViewById(R.id.btnStopWatch);
btnTimer = (Button)findViewById(R.id.btnTimer);
}
Button btnStopWatch, btnTimer;
}
class Event{
public Event(){
l.btnStopWatch.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(getApplicationContext(), StopWatchActivity.class);
startActivity(i);
}
});
l.btnTimer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(getApplicationContext(), TimerActivity.class);
startActivity(i);
}
});
}
}
Layout l; Event e;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
l = new Layout(); e = new Event();
}}
第一个有效的活动:
公共类StopWatch活动扩展了AppCompatActivity{
class Layout{
public Layout(){
tvHours = (TextView)findViewById(R.id.tvHours);
tvMinutes = (TextView)findViewById(R.id.tvMinutes);
tvSeconds = (TextView)findViewById(R.id.tvSeconds);
tvBack = (TextView)findViewById(R.id.tvBack);
btnStartStop = (Button)findViewById(R.id.btnStartStop);
btnReset = (Button)findViewById(R.id.btnReset);
}
TextView tvHours, tvMinutes, tvSeconds, tvBack;
Button btnStartStop, btnReset;
}
class Event{
public Event(){
l.btnStartStop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(isStarted){
Stop();
}else {
Start();
}
}
});
l.btnReset.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Reset();
}
});
l.tvBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(getApplicationContext(), MainActivity.class);
startActivity(i);
}
});
}
}
Layout l; Event e;
boolean isStarted = false;
int sec = 0, min = 0, hour = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_stop_watch);
l = new Layout(); e = new Event();
}
public void Start(){
l.btnStartStop.setText("Stop");
isStarted = true;
Thread t = new Thread(new Runnable() {
@Override
public void run() {
while (isStarted){
try{
Thread.sleep(1000);
runOnUiThread(new Runnable() {
@Override
public void run() {
if(isStarted){
MoveTime();
}
}
});
}catch (InterruptedException e){
}
}
}
});
t.start();
}
public void MoveTime(){
sec++;
if (sec >= 59){
sec = 0;
min++;
if(min >= 59){
min = 0;
hour++;
}
}
UpdateScreen();
}
public void UpdateScreen(){
l.tvHours.setText(Format(hour));
l.tvMinutes.setText(Format(min));
l.tvSeconds.setText(Format(sec));
}
public void CleanScreen(){
l.tvHours.setText("00");
l.tvMinutes.setText("00");
l.tvSeconds.setText("00");
}
public String Format(int i){
if (i<=9){
return "0" + i;
}else{
return Integer.toString(i);
}
}
public void Stop(){
isStarted = false;
l.btnStartStop.setText("Start");
}
public void Reset(){
if(isStarted)
Stop();
CleanScreen();
sec = 0;
min = 0;
hour = 0;
}}
class Layout {
public Layout() {
etHour = (EditText) findViewById(R.id.etHour);
etHour.setFilters(new InputFilter[]{new InputFilterMinMax("0", "24")});
etMin = (EditText) findViewById(R.id.etMin);
etMin.setFilters(new InputFilter[]{new InputFilterMinMax("0", "59")});
etSec = (EditText) findViewById(R.id.etSec);
etSec.setFilters(new InputFilter[]{new InputFilterMinMax("0", "59")});
btnStartStop = (Button) findViewById(R.id.btnStartStop);
btnReset = (Button) findViewById(R.id.btnReset);
tvBack1 = (TextView)findViewById(R.id.tvBack);
}
EditText etHour, etMin, etSec;
Button btnStartStop, btnReset;
TextView tvBack1;
}
class Event {
public Event() {
l.btnStartStop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (isStarted) {
Stop();
} else {
Start();
}
}
});
l.btnReset.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Reset();
}
});
l.tvBack1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(getApplicationContext(), MainActivity.class);
startActivity(i);
}
});
}
}
Layout l;
Event e;
boolean isStarted = false;
int sec = 0, min = 0, hour = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_timer);
l = new Layout();
e = new Event();
}
public void Start() {
l.btnStartStop.setText("Stop");
isStarted = true;
Thread t = new Thread(new Runnable() {
@Override
public void run() {
while (isStarted) {
try {
Thread.sleep(1000);
runOnUiThread(new Runnable() {
@Override
public void run() {
if (isStarted) {
MoveTime();
}
}
});
} catch (InterruptedException e) {
}
}
}
});
t.start();
}
public void MoveTime() {
sec = Integer.valueOf(l.etSec.getText().toString());
min = Integer.valueOf(l.etMin.getText().toString());
hour = Integer.valueOf(l.etHour.getText().toString());
sec--;
if (sec < 0) {
sec = 59;
min--;
if (min < 0) {
min = 59;
hour--;
}
}
UpdateScreen();
if (hour == 0) {
if (min == 0) {
if (sec == 0) {
Stop();
}
}
}
}
public void UpdateScreen(){
l.etHour.setText(Format(hour));
l.etMin.setText(Format(min));
l.etSec.setText(Format(sec));
}
public void CleanScreen(){
l.etHour.setText("00");
l.etMin.setText("00");
l.etSec.setText("00");
}
public String Format(int i){
if (i<=9){
return "0" + i;
}else{
return Integer.toString(i);
}
}
public void Stop(){
isStarted = false;
l.btnStartStop.setText("Start");
}
public void Reset(){
if(isStarted)
Stop();
CleanScreen();
sec = 0;
min = 0;
hour = 0;
}}
类布局{
公共布局(){
tvHours=(TextView)findViewById(R.id.tvHours);
tvMinutes=(TextView)findViewById(R.id.tvMinutes);
tvSeconds=(TextView)findViewById(R.id.tvSeconds);
tvBack=(TextView)findViewById(R.id.tvBack);
btnStartStop=(按钮)findViewById(R.id.btnStartStop);
btnReset=(按钮)findViewById(R.id.btnReset);
}
text查看电视小时数、电视分钟数、电视秒数、电视返回;
按钮btnStartStop,btnReset;
}
班级活动{
公共活动(){
l、 btnStartStop.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
如果(已启动){
停止();
}否则{
Start();
}
}
});
l、 btnReset.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
重置();
}
});
l、 setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
Intent i=新的Intent(getApplicationContext(),MainActivity.class);
星触觉(i);
}
});
}
}
布局l;事件e;
布尔值isStarted=false;
内秒=0,分钟=0,小时=0;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u stop\u watch);
l=新布局();e=新事件();
}
公开作废开始(){
l、 btnStartStop.setText(“停止”);
IsStart=true;
线程t=新线程(新的可运行线程(){
@凌驾
公开募捐{
while(已启动){
试一试{
睡眠(1000);
runOnUiThread(新的Runnable(){
@凌驾
公开募捐{
如果(已启动){
MoveTime();
}
}
});
}捕捉(中断异常e){
}
}
}
});
t、 start();
}
公共时间(){
sec++;
如果(秒>=59){
秒=0;
min++;
如果(最小值>=59){
最小值=0;
小时++;
}
}
UpdateScreen();
}
public void UpdateScreen(){
l、 设置文本(格式(小时));
l、 设置文本(格式(分钟));
l、 设置文本(格式(秒));
}
公共屏幕(){
l、 tvHours.setText(“00”);
l、 tvMinutes.setText(“00”);
l、 tvSeconds.setText(“00”);
}
公共字符串格式(int i){
如果(irocked Android Programming
你正在做。你能添加日志吗?为什么不需要类?替换getApplicationContext()
与活动一起。这将并检查您是否已在清单中声明了您的活动。将logcat输出添加到问题中会更有帮助这是日志:E/AndroidRuntime:FATAL EXCEPTION:main Process:com.example.gatlan.clocks,PID:3024java.lang.RuntimeException:无法启动活动组件信息{com.example.gatlan.clocks/com.example.gatlan.clocks.TimeActivity}:java.lang.NullPointerException:尝试调用虚拟方法'void android.widget.TextView.setOnClickListener(android.view.view$OnClickListener)'在您正在执行的空对象引用上。Rocket Android Programming
是否可以添加日志?为什么不需要类?替换getApplicationContext()
与活动一起。这将并检查您是否已在清单中声明了您的活动。将logcat输出添加到问题中会更有帮助这是日志:E/AndroidRuntime:FATAL EXCEPTION:main Process:com.example.gatlan.clocks,PID:3024java.lang.RuntimeException:无法启动activity ComponentInfo{com.example.gatlan.clocks/com.example.gatlan.clocks.TimeActivity}:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'void android.widget.TextView.setOnClickListener(android.view.view$OnClickListener)'