2011-11-23 38 views
2

我正在尝试为Android编写一个非常简单的应用程序。 它应该做2件事:无法让按钮与其他代码同时工作

  1. Textips中的Dipslay方向传感器信息。
  2. 按钮单击显示烤面包。

随着下面的传感器信息的代码被显示,但不能点击按钮:

package com.example.hello; 

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.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.TextView; 
import android.widget.Toast; 




public class HelloAndroid extends Activity implements OnClickListener { 
    /* Called when the activity is first created. */ 
    private SensorManager mSensorManager; 
    private Sensor mSensor; 
    private float[] mValues; 

    public void onClick(View v) { 
     // do something when the button is clicked 
     Context context = getApplicationContext(); 
     Toast toast = Toast.makeText(context, "Hello", Toast.LENGTH_LONG); 
     toast.show(); 

    } 

    private final SensorEventListener mListener = new SensorEventListener() { 
     public void onSensorChanged(SensorEvent event) { 
      mValues = event.values; 
      setContentView(R.layout.main); 
      TextView t=(TextView)findViewById(R.id.status); 
      t.setText(Float.toString(mValues[0]) + "\n" + 
         Float.toString(mValues[1]) + "\n" + 
         Float.toString(mValues[2])); 
     } 

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


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

     Button button = (Button)findViewById(R.id.start); 
     button.setOnClickListener(this); 


     mSensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE); 
     mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION); 

     mSensorManager.registerListener(mListener, mSensor, 
       SensorManager.SENSOR_DELAY_GAME); 

    } 



} 

如果我评论的代码的一部分,其显示传感器信息的按钮开始工作:

private final SensorEventListener mListener = new SensorEventListener() { 
     public void onSensorChanged(SensorEvent event) { 
      mValues = event.values; 
     /* setContentView(R.layout.main); 
      TextView t=(TextView)findViewById(R.id.status); 
      t.setText(Float.toString(mValues[0]) + "\n" + 
         Float.toString(mValues[1]) + "\n" + 
         Float.toString(mValues[2])); 
      */ } 

我在做什么错?如何让两件事同时工作?

+1

为什么你在传感器事件监听器中再次设置内容视图?它已经设置在OnCreate() – Urban

+0

谢谢大家!全部3个答案都是对的:) – defhlt

回答

3

只是从你的方法onSensorChanged删除线setContentView(R.layout.main),它是重复的,因为已经有方法setContentView()onCreate()方法, 让我知道,如果有一个问题

4

也许你可以尝试设置上下文仅在onCreate上查看。不要在SensorEvent侦听器上重新设置它。

+0

是什么?另一个人去标记,我没有?我们同时回答? – jiduvah

+0

我会为你投票lool :) – Houcine

+0

ha cheers pal,最近我一直在试图帮助这个社区,似乎没有得到任何地方。干杯 – jiduvah