Autore Topic: Problema TextView  (Letto 386 volte)

Offline MrOrange

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 4
  • Sistema operativo:
    Win XP
Problema TextView
« il: 18 Luglio 2013, 17:06:03 CEST »
0
Ciao a tutti ho un problema con textView alle righe 18 e 19. Sto cercando di fare in modo che due textview mostrino rispettivamente l'eventuale presenza e il modello del sensore di luce e la luce misurata dal sensore.


Codice (Java): [Seleziona]
package com.example.sensor;


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

public class LightActivity extends Activity {

        private SensorManager mySensorManager;
        private Sensor lightSensor;

        TextView textLightSensor = (TextView)findViewById(R.id.textLightModel);
        TextView textData = (TextView)findViewById(R.id.textLightData);
       
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_light);
               
                mySensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
                lightSensor = mySensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
               
                if (mySensorManager == null) {
                        textLightSensor.setText("@string/no_sensor");}
                else {textLightSensor.setText(lightSensor.getName());
               
                mySensorManager.registerListener(lightSensorEventListener,lightSensor,SensorManager.SENSOR_DELAY_NORMAL);
                }
        }

       
        SensorEventListener lightSensorEventListener = new SensorEventListener(){
               
               
  @Override
  public void onAccuracyChanged(Sensor sensor, int accuracy) {
   // TODO Auto-generated method stub

  }

  @Override
  public void onSensorChanged(SensorEvent event) {
   // TODO Auto-generated method stub
   //if(event.sensor.getType()==Sensor.TYPE_LIGHT){

    float currentReading = event.values[0];
   
    {textData.setText("Current Reading: " + String.valueOf(currentReading)+ "lux");
 
    }

  }

        };
 
}
       
               


allego il logcat. Non capisco cosa ci sia di sbagliato, ho settato anche l'uses-feature nel manifest e l'activity principale funziona. Sono aperto a qualsiasi suggerimento riguardo il codice.

Offline Sakazaki

  • Utente normale
  • ***
  • Post: 396
  • Respect: +74
    • Mostra profilo
  • Dispositivo Android:
    Sony xperia Z
  • Play Store ID:
    Saka Labs
  • Sistema operativo:
    Windows 8
Re:Problema TextView
« Risposta #1 il: 18 Luglio 2013, 17:10:17 CEST »
0
Il findViewById lo devi usare dopo che hai impostato il layout nell'onCreate, non prima.

Offline MrOrange

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 4
  • Sistema operativo:
    Win XP
Re:Problema TextView
« Risposta #2 il: 18 Luglio 2013, 17:23:08 CEST »
0
Intendi in questo modo?
Codice (Java): [Seleziona]
public class LightActivity extends Activity {

        private SensorManager mySensorManager;
        private Sensor lightSensor;

       
       
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_light);
               
                mySensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
                lightSensor = mySensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
               
                if (mySensorManager == null) {
                        textLightSensor.setText("@string/no_sensor");}
                else {textLightSensor.setText(lightSensor.getName());
               
                mySensorManager.registerListener(lightSensorEventListener,lightSensor,SensorManager.SENSOR_DELAY_NORMAL);
                }
        }

        TextView textLightSensor = (TextView)findViewById(R.id.textLightModel);
        TextView textData = (TextView)findViewById(R.id.textLightData);


perchè ho provato e crasha ancora. Allego il progetto completo in caso serva

Post unito: 18 Luglio 2013, 17:33:20 CEST
ho risolto in questo modo
Codice (Java): [Seleziona]
package com.example.sensor;


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

public class LightActivity extends Activity {

        private SensorManager mySensorManager;
        private Sensor lightSensor;

       
       
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_light);
               
                mySensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
                lightSensor = mySensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
               
                TextView textLightSensor = (TextView)findViewById(R.id.textLightModel);
               
               
                if (mySensorManager == null) {
                        textLightSensor.setText("@string/no_sensor");}
                else {textLightSensor.setText(lightSensor.getName());
               
                mySensorManager.registerListener(lightSensorEventListener,lightSensor,SensorManager.SENSOR_DELAY_NORMAL);
                }
               
               
        }

       
       
       
        SensorEventListener lightSensorEventListener = new SensorEventListener(){
               
  @Override
  public void onAccuracyChanged(Sensor sensor, int accuracy) {
   // TODO Auto-generated method stub

  }

  @Override
  public void onSensorChanged(SensorEvent event) {
   // TODO Auto-generated method stub
   //if(event.sensor.getType()==Sensor.TYPE_LIGHT){

    float currentReading = event.values[0];
    TextView textData = (TextView)findViewById(R.id.textLightData);
    {textData.setText("Current Reading: " + String.valueOf(currentReading)+ "lux");
 
    }

  }

        };
 
}
       
               
« Ultima modifica: 18 Luglio 2013, 17:33:20 CEST da MrOrange, Reason: Merged DoublePost »

Offline crbin1

  • Utente junior
  • **
  • Post: 61
  • Respect: +6
    • labeltodo
    • Mostra profilo
    • Do Androids Dream of Electric Sheep?
  • Dispositivo Android:
    Galaxy Nexus
Re:Problema TextView
« Risposta #3 il: 18 Luglio 2013, 17:36:27 CEST »
0
Prova come te l'ho cambiato sotto, non ha senso mettere le textview come variabili membro della classe, ti devi creare la variabile dopo aver fatto setContentView e prima di usarle.

Buona pratica sarebbe anche controllare che non siano nulle prima di usarle.


Intendi in questo modo?
Codice (Java): [Seleziona]
public class LightActivity extends Activity {

        private SensorManager mySensorManager;
        private Sensor lightSensor;

       
       
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_light);
               
                mySensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
                lightSensor = mySensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
               

                TextView textLightSensor = (TextView)findViewById(R.id.textLightModel);
               

                if (mySensorManager == null) {
                        textLightSensor.setText("@string/no_sensor");}
                else {textLightSensor.setText(lightSensor.getName());
               
                mySensorManager.registerListener(lightSensorEventListener,lightSensor,SensorManager.SENSOR_DELAY_NORMAL);
                }
        }


perchè ho provato e crasha ancora. Allego il progetto completo in caso serva