0

ab EditText に値が含まれていないときに Android アプリケーションがクラッシュするのを防ぐ方法を知っている人はいますか?

編集:申し訳ありませんが、私は私の携帯電話でこれを投稿しました. どうぞ:

import java.util.Random;

import android.app.Activity;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.widget.EditText;
import android.widget.TextView;

public class RandomButtonActivity extends Activity implements SensorEventListener
{
    public float x = 0, y = 0, z = 0;           
    public float a = 10, b = 10, c = 10;
    public float k = 4;
    public int j = 0, i = 0;
    public int rand = 0;
    public String j1;
    public String i1;


    TextView testo;
    TextView ultimo;

    EditText limiteMin;
    EditText limiteMax;

    Random generator = new Random();

    SensorManager sm;

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        testo = (TextView) findViewById(R.id.textView1);
        ultimo = (TextView) findViewById(R.id.textView4);

        limiteMin = (EditText) findViewById(R.id.editText2);
        limiteMax = (EditText) findViewById(R.id.EditText01);

        sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
        sm.registerListener(this, sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);

        random();
    }

    public void onSensorChanged(SensorEvent event)
    {
        x = event.values[0];
        y = event.values[1];
        z = event.values[2];        

        if(x>a+k || x<a-k || y>b+k || y<b-k || z>c+k || z<c-k)
        {
            rand = random();
        }
        a = x;
        b = y;
        c = z;
    }

    public int random() 
    {
        j = Integer.parseInt(limiteMin.getText().toString());
        i = Integer.parseInt(limiteMax.getText().toString());
        int v = 0;

            if(i==0 && j==0)
            {
                v = generator.nextInt();                       
            }
            else if(j>=i && j!=0)
            {               
                v = 0;
            }           
            else
            {
                i = i+1;
                do
                {
                v = generator.nextInt(i);
                testo.setText("Random: "+v);
                }
                while(v<j);
            }
            testo.setText("Random: "+v);   
            ultimo.setText("Random precedente: "+rand);

        return v;
    }

    public void onAccuracyChanged(Sensor sensor, int accuracy) 
    {
    }
}

プログラムがクラッシュするのは、2 つの EditText のうち 1 つが空で、メソッド random() が呼び出された場合のみです。

4

2 に答える 2

3

次のコードを適用し、

  EditText et= (EditText)findViewById(R.id.editText);
  if(et.getText.toString.equals(null) || et.getText.toString.equals(""))
   {
       Toast.makeText(this,"please enter something in text box",Toast.LENGTH_LONG).show(); 
   }
于 2012-05-28T09:14:54.693 に答える
0

== 演算子を使用して null 値をチェックする必要があります。

et.getText() == null

null 値に対して toString() を呼び出すと、NullPointer がスローされます。これがクラッシュの原因ですか?

于 2012-05-28T09:17:19.913 に答える