安卓開發 搖一搖功能

來源:互聯網
上載者:User

標籤: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線程中做了計算量大的操作了吧

安卓開發 搖一搖功能

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.