|
||
|
|
|
|||||||
| 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
|
||||
|
||||
|
Como instanciar clases en android??
Hola amigos quiero preguntarles como se hace para instanciar clases en android ya que lo hago como lo aria en php o en la misma Java pero no me funciona, he leído acerca del tema pero aun no me queda muy claro que digamos.
Estoy haciendo una app de practica en donde tengo dos clases: una llamada Principal y otra clase que se llama Mensajes, la idea es que yo en Mensajes coloco todos los mensajes que podría emitir la app y luego donde yo los necesito pues lo que hago es instanciarlos. Les dejo el código para que lo puedan apreciar y por favor me puedan decir como se puede hacer eso en android. Gracias.. CLASE PRINCIPAL package com.example.jangarita.justjava; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.view.View; import android.widget.TextView; import android.widget.Toast; import java.text.NumberFormat; import java.util.Locale; public class Principal extends ActionBarActivity { int cantidadCafe = 1; @override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_principal); } /**Este metodo incrementa el numero de tazas de cafe a comprar public void incrementaTaza(View v) { cantidadCafe = cantidadCafe + 1; verTaza(cantidadCafe); } /**Este metodo decrementa el numero de tazas de cafe a comprar public void decrementarTaza(View v) { cantidadCafe = cantidadCafe - 1; verTaza(cantidadCafe); } /**Este metodo muestra el total de tazas de cafe que se van a comprar private void verTaza(int numero){ TextView cantidadTextView = (TextView) findViewById(R.id.cantidad_text_view); if (numero >= 1) { cantidadTextView.setText("" + numero); } else if(numero < 1){ Mensajes men=new Mensajes(); men.cantidadPedir(); cantidadCafe=1; } } /**Este metodo muestra el total a pagar en moneda local por las tazas de cafe private void displayPrecio(int number) { TextView precioTextView = (TextView) findViewById(R.id.precio_text_view); precioTextView.setText("" + number); } /**Este metodo muestra el total a pagar por la compra public void submitOrder(View view) { displayPrecio(cantidadCafe * 5); } } CLASE MENSAJES package com.example.jangarita.justjava; import android.app.Activity; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.view.View; import android.widget.Toast; /** * Created by Jose on 13/12/2015. * public class Mensajes extends Activity { public void cantidadPedir(){ Toast mensaje= Toast.makeText(getApplicationContext(),"No puedes pedir menos de 1 taza",Toast.LENGTH_LONG); mensaje.show(); } } |
|
|
|
#3
|
||||
|
||||
|
Realmente a tu código lo único que le veo es que Mensajes no necesita heredar de Activity.
Te está dando fallo porque Mensajes no tiene Context al no haber sido lanzada su Activity y por tanto getApplicationContext() da excepción. Al constructor de Mensajes pásale el getApplicationContext de Principal (que será el mismo para todas las Activities), quita que Mensajes hereda de Activity, y solucionado. |
|
#4
|
||||
|
||||
|
Hola KriogeN
Hola muchas gracias por responder...pudieras por favor darme un ejemplo de lo qie dices?? Es que yo quite que mensaje heredara de Activity pero me dice que no reconece el objeto Toast, entonces no le hallo la salida.
|
|
#5
|
||||
|
||||
|
Te dirá que no reconoce el getApplicationContext(), el Toast no forma parte de Activity.
Lo que digo es que Mensajes no herede nada (que realmente significa que herede de Object) Luego añadir el siguiente constructor: public Mensajes(Context context) { this.context = context; } Obviamente necesitas una variable global: Context context; Y luego tendrías el método cantidadPedir así: public void cantidadPedir(){ Toast mensaje= Toast.makeText(context,"No puedes pedir menos de 1 taza",Toast.LENGTH_LONG); mensaje.show(); } Finalmente cuando construyes Mensajes desde Principal sería: Mensajes men=new Mensajes(getApplicationContext()); Si Mensajes simplemente va a ser para mostrar mensajes realmente no necesitas mantener el objeto para futuros usos, y podría ser estático: Mensajes.cantidadPedir(getApplicationContext()); Y el método sería: public static void cantidadPedir(Context context){ Toast mensaje= Toast.makeText(context,"No puedes pedir menos de 1 taza",Toast.LENGTH_LONG); mensaje.show(); } |
![]() |
Estás aquí
|
||||||
|
||||||