编译能通过,为什么在手机上运行会直接闪退呢

编译能通过,为什么在手机上运行会直接闪退呢

问题描述:

package com.example.mylove;

import android.app.Dialog;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {

private int num ;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Button go = (Button) super.findViewById(R.id.go);
    EditText et = (EditText) super.findViewById(R.id.et);
    this.num = Integer.parseInt(et.getText().toString());
    go.setOnClickListener(new OnClickListener1());}
    private class  OnClickListener1 implements View.OnClickListener {
    @Override
    public void onClick(View view){


        if(forgive(num)==1){
            Dialog dialog= new AlertDialog.Builder(MainActivity.this)
                    .setTitle("you win yourself")
                    .setMessage("我还能说什么呢?当然是选择原谅她!")
                    .setIcon(R.drawable.forgive)
                    .create();
            dialog.show();}
        else{
           Dialog dialog2 = new AlertDialog.Builder(MainActivity.this)
                    .setTitle("you lose her").setMessage("天涯何处无芳草,请大侠重新来过!")
                    .setIcon(R.drawable.saybyebye)
                    .create();
            dialog2.show();}
    }





}

```<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="com.example.mylove.MainActivity"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ff00ff00"
    >
    <TextView
        android:gravity="center"
        android:textSize="25sp"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/word1"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />
    <TextView

        android:text="@string/word2"
        android:textSize="15sp"
        android:gravity="center"
        android:layout_above="@+id/et"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"/>
    <EditText
        android:id="@+id/et"
        android:gravity="center"
        android:hint="@string/forgive"
        android:inputType="number"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_above="@+id/go"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <Button
        android:id="@+id/go"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_centerInParent="true"
        android:hint="@string/go" />
</RelativeLayout>



图片说明

你在onCreate方法中声明了et控件后就调用了获取数据的方法,这个时候EditTExt控件内还没有内容,图片说明

hint 属性只是提示作用,通过et.getText(0.toString()方法获取不到
可以在布局文件中给et一个text默认值或者this.num = Integer.parseInt(et.getText().toString());这句代码放到点击事件内,先对et控件内数据进行非空判断
比如:
if(!TextUtils.isEmpty(et.getText(0.toString().trin())){//如果控件内数据不为空
this.num = Integer.parseInt(et.getText().toString());
if(forgive(num)==1){
Dialog dialog= new AlertDialog.Builder(MainActivity.this)
.setTitle("you win yourself")
.setMessage("我还能说什么呢?当然是选择原谅她!")
.setIcon(R.drawable.forgive)
.create();
dialog.show();}
else{
Dialog dialog2 = new AlertDialog.Builder(MainActivity.this)
.setTitle("you lose her").setMessage("天涯何处无芳草,请大侠重新来过!")
.setIcon(R.drawable.saybyebye)
.create();
dialog2.show();}
}

就不会报错了,可以看代码的错误日志,会明确指出问题在哪里

自学的,有什么低级错误也请大家不吝赐教。