Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android

Respuesta
 
Herramientas
  #1  
Viejo 15/03/11, 00:48:56
Array

[xs_avatar]
normion normion no está en línea
Usuario novato en la web
 
Fecha de registro: mar 2011
Localización: Sevilla
Mensajes: 4
Modelo de smartphone: Samsung I9000
Tu operador: Vodafone
Problema con declaración de controles(botón)

Saludos, mi problema es que tengo un código que en teoría debería funcionar y de hecho compila, pero cuando lo ejecuto en el emulador me da un force close y se acabo. He ido quitando partes del código hasta que he dado con lo que falla y es con la declaración de los botones que creo en main.xml

El codigo completo es:

Código:
import android.app.Activity;
import android.widget.Button;
import android.os.Bundle;
import android.view.View;
import android.util.Log;
import android.media.MediaPlayer;

import java.io.IOException;

public class Reproductor extends Activity {
	
	
	private static final String LOG_TAG = "AudioRecordTest";
    private static String mFileName = null;

    final Button btnStart = (Button)findViewById(R.id.btnStart);
    final Button btnStop = (Button)findViewById(R.id.btnStop);
    private MediaPlayer   mPlayer = null;
    
    
    /** Called when the activity is first created. */
    @override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        btnStart.setOnClickListener(new View.OnClickListener() {
            
            public void onClick(View arg0)
            {
            	mFileName = "http://62.212.74.140:8206/listen.pls";
            	startPlaying();
            }
        });
        
        btnStop.setOnClickListener(new View.OnClickListener() {
            
            public void onClick(View arg0)
            {
            	stopPlaying();
            }
        });
        
        
    }
    private void startPlaying() {
    	 mPlayer = new MediaPlayer();
         try {
             mPlayer.setDataSource(mFileName);
             mPlayer.prepare();
             mPlayer.start();
         } catch (IOException e) {
             Log.e(LOG_TAG, "prepare() failed");
         }
    }
    
    private void stopPlaying() {
        mPlayer.release();
        mPlayer = null;
    }
    
    
}
Concretamente el "codigo maligno" es este:

Código:
   final Button btnStart = (Button)findViewById(R.id.btnStart);
    final Button btnStop = (Button)findViewById(R.id.btnStop);
Alguien sabe que puede estar fallando??? Me tiene loco...
Responder Con Cita


  #2  
Viejo 15/03/11, 13:28:54
Array

[xs_avatar]
mekawendie mekawendie no está en línea
Miembro del foro
 
Fecha de registro: ene 2011
Localización: Salamanca
Mensajes: 498
Modelo de smartphone: Xiaomi Mi 9
Tu operador: Yoigo
Puedes poner la parte del main.xml donde pintas los botones?
Responder Con Cita
  #3  
Viejo 15/03/11, 22:31:53
Array

[xs_avatar]
normion normion no está en línea
Usuario novato en la web
 
Fecha de registro: mar 2011
Localización: Sevilla
Mensajes: 4
Modelo de smartphone: Samsung I9000
Tu operador: Vodafone
Si, por supuesto. Es este:

Código:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal">
 
    <Button android:id="@+id/btnStart"
    android:text="Play"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />
    
    <Button android:id="@+id/btnStop"
    android:text="Stop"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />
    



</LinearLayout>
Muchas gracias por el interés!!
Responder Con Cita
  #4  
Viejo 15/03/11, 23:16:54
Array

[xs_avatar]
Duqe Duqe no está en línea
Usuario veterano
 
Fecha de registro: jun 2009
Mensajes: 668
Modelo de smartphone: Nexus One

Te has fijado en el Logcat? Suele darte pistas de donde viene el error.
Responder Con Cita
  #5  
Viejo 16/03/11, 12:53:41
Array

[xs_avatar]
adk adk no está en línea
Miembro del foro
 
Fecha de registro: abr 2010
Mensajes: 166
Modelo de smartphone: Galaxy Nexus
Tu operador: Pepephone
Tienes varios errores:
  • No puedes declarar como final un objeto que quieres modificar.
  • No puedes utilizar una llamada a un método cuando declaras una variable a nivel de instancia

Por lo que el código que tendría que funcionar es:
Código:
import android.app.Activity;
import android.widget.Button;
import android.os.Bundle;
import android.view.View;
import android.util.Log;
import android.media.MediaPlayer;

import java.io.IOException;


public class Reproductor extends Activity {
	
	
    private static final String LOG_TAG = "AudioRecordTest";
    private static String mFileName = null;

    private Button btnStart ;
    private Button btnStop;
    private MediaPlayer   mPlayer = null;
    
    
    /** Called when the activity is first created. */
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.prueba);
        
        btnStart = (Button)findViewById(R.id.btnStart);
        btnStop = (Button)findViewById(R.id.btnStop);
       
        btnStart.setOnClickListener(new View.OnClickListener() {
            
            public void onClick(View arg0)
            {
            	mFileName = "http://62.212.74.140:8206/listen.pls";
            	startPlaying();
            }
        });
        
        btnStop.setOnClickListener(new View.OnClickListener() {
            
            public void onClick(View arg0)
            {
            	stopPlaying();
            }
        });
        
        
    }
    private void startPlaying() {
    	 mPlayer = new MediaPlayer();
         try {
             mPlayer.setDataSource(mFileName);
             mPlayer.prepare();
             mPlayer.start();
         } catch (IOException e) {
             Log.e(LOG_TAG, "prepare() failed");
         }
    }
    
    private void stopPlaying() {
        mPlayer.release();
        mPlayer = null;
    }
    
    
}
Responder Con Cita
  #6  
Viejo 16/03/11, 18:52:18
Array

[xs_avatar]
normion normion no está en línea
Usuario novato en la web
 
Fecha de registro: mar 2011
Localización: Sevilla
Mensajes: 4
Modelo de smartphone: Samsung I9000
Tu operador: Vodafone
Adk, gracias. El problema era lo de declararlo antes de invocar a main a traves de R, lo de fianl esta bien. Me di cuenta anoche despues de probar mil veces y ahora funciona maravillosamente Siento no haber actualizado mis avances antes.
Gracias a todos!!
Responder Con Cita
  #7  
Viejo 16/03/11, 19:12:49
Array

[xs_avatar]
mekawendie mekawendie no está en línea
Miembro del foro
 
Fecha de registro: ene 2011
Localización: Salamanca
Mensajes: 498
Modelo de smartphone: Xiaomi Mi 9
Tu operador: Yoigo
Exacto, debes crear la instancia del control en el OnCreate después de haber establecido el ContentView, en tu caso el main.

Si no, al llamar a findViewById te dará un nullpointerexception ya que no tiene un Content donde buscar y se vuelve to locooooo !!!

Suerte con ese reproductor!
Responder Con Cita
  #8  
Viejo 01/04/11, 02:05:37
Array

[xs_avatar]
czuniga czuniga no está en línea
Usuario novato en la web
 
Fecha de registro: jul 2009
Localización: San Jose Costa Rica
Mensajes: 28
Modelo de smartphone: HTC EVO 3D X515m
Tu operador: Movistar
hola compañeros, les dejo un link d descarga , es un sistemita de android para la d2, despues de una pequeñas modificaciones, como quitar un programa y poner otro, funciono muy bien, quiza les sirva de algo, saludos.
http://www.4shared.com/dir/i7-s8TgE/androitopaswm6.html
Responder Con Cita
  #9  
Viejo 01/04/11, 09:21:44
Array

[xs_avatar]
pmaicas pmaicas no está en línea
Desarrollador
 
Fecha de registro: dic 2008
Mensajes: 1,299

Tienes el código que inicializa las variables Button fuera del método onCreate, cuando todavía no se ha cargado el layout y por lo tanto findViewById devolverá null.
__________________
Saludos
-Pedro-
http://www.maicas.net/ (desarrollo de software)
http://droid.maicas.net/ (solo android)
Responder Con Cita
  #10  
Viejo 26/04/11, 10:35:13
Array

[xs_avatar]
luisv69 luisv69 no está en línea
Usuario novato en la web
 
Fecha de registro: mar 2010
Mensajes: 3
Modelo de smartphone: tatoo

Hola, podeis poner el código? porque yo estaba con lo mismo y tenia problemas parecidos, solo que ahora no se me para, es decir, le doy al play y no va ya el stop ni nada me dice que no responde.
muchas gracias
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 02:49:30 (GMT +1)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /