標籤:android blog http io os java sp on 2014
============問題描述============
以下是我的搖一搖實現的代碼
public class Yao extends Activity implements SensorEventListener{ EditText tv =(EditText)findViewById(R.id.editText1); Button button =(Button)findViewById(R.id.button1); SensorManager sensorManager = null; Vibrator vibrator = null; @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);if (android.os.Build.VERSION.SDK_INT > 9) { StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); } button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubtv.setText("初始文本");} });sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);vibrator = (Vibrator) getSystemService(Service.VIBRATOR_SERVICE);}@Override protected void onPause() { super.onPause(); sensorManager.unregisterListener(this); } @Override protected void onResume() { super.onResume(); sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL); } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { //當感應器精度改變時回調該方法,Do nothing. } @Override public void onSensorChanged(SensorEvent event) { int sensorType = event.sensor.getType(); //values[0]:X軸,values[1]:Y軸,values[2]:Z軸 float[] values = event.values; if (sensorType == Sensor.TYPE_ACCELEROMETER) { if ((Math.abs(values[0]) > 17 || Math.abs(values[1]) > 17 || Math .abs(values[2]) > 17)) {// Log.d("sensor x ", "============ values[0] = " + values[0]);// Log.d("sensor y ", "============ values[1] = " + values[1]);// Log.d("sensor z ", "============ values[2] = " + values[2]); tv.setText("搖一搖成功!!!"); //搖動手機後,再伴隨震動提示~~ vibrator.vibrate(500); } } }}
為什麼程式啟動並執行時候會提示程式無響應然後就退出了?我看了一下網上的代碼都是這麼寫的,問題出現在哪裡呢?高分送上,請各位高手幫幫忙
============解決方案1============
控制項初始化不能放在最上面
EditText tv =(EditText)findViewById(R.id.editText1); Button button =(Button)findViewById(R.id.button1);
這個需要在
setContentView(R.layout.activity_main);
後調用
============解決方案2============
看來LZ是新手啊,以後得認真學習
引用 1 樓 guoyoulei520 的回複:
控制項初始化不能放在最上面
EditText tv =(EditText)findViewById(R.id.editText1); Button button =(Button)findViewById(R.id.button1);
這個需要在
setContentView(R.layout.activity_main);
後調用
============解決方案3============
在UI線程中做了計算量大的操作了吧
安卓開發 搖一搖功能