|
||
|
|
|
|||||||
| 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 |
![]() |
|
|
Herramientas |
|
#1
|
||||
|
||||
|
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;
}
}
Código:
final Button btnStart = (Button)findViewById(R.id.btnStart);
final Button btnStop = (Button)findViewById(R.id.btnStop);
|
|
|
|
#2
|
||||
|
||||
|
Puedes poner la parte del main.xml donde pintas los botones?
|
|
#3
|
||||
|
||||
|
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>
|
|
#4
|
||||
|
||||
|
Te has fijado en el Logcat? Suele darte pistas de donde viene el error.
|
|
#5
|
||||
|
||||
|
Tienes varios errores:
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;
}
}
|
|
#6
|
||||
|
||||
|
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
Gracias a todos!! |
|
#7
|
||||
|
||||
|
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! |
|
#8
|
||||
|
||||
|
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 |
|
#9
|
||||
|
||||
|
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) |
|
#10
|
||||
|
||||
|
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 |
![]() |
Estás aquí
|
||||||
|
||||||