Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 由于活动调用,应用程序正在崩溃_Java_Android - Fatal编程技术网

Java 由于活动调用,应用程序正在崩溃

Java 由于活动调用,应用程序正在崩溃,java,android,Java,Android,我试图通过带有OnClickListener的按钮从MainActivity调用一个活动 第一个活动正在响应并工作,第二个活动不工作并使应用程序崩溃 请帮我找到解决办法 谢谢 代码如下: class Layout{ public Layout(){ btnStopWatch = (Button)findViewById(R.id.btnStopWatch); btnTimer = (Button)findViewById(R.id.btnTimer);

我试图通过带有OnClickListener的按钮从MainActivity调用一个活动

第一个活动正在响应并工作,第二个活动不工作并使应用程序崩溃

请帮我找到解决办法

谢谢

代码如下:

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){

如果(i
rocked 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)'