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 26/06/14, 22:45:46
Array

[xs_avatar]
Guixe94 Guixe94 no está en línea
Desarrollador
 
Fecha de registro: abr 2012
Localización: Barcelona, Catalunya
Mensajes: 900
Modelo de smartphone: HTC ONE y Galaxy Note 3
Tu operador: Orange
rom Ayuda ocultar y mostrar boton

Hola,
tengo implementado en mi app el servicio "in app billing" y puedo comprar el producto etc todo ok. El problema es que quiero que cuando compren el producto se oculte el boton de comprar y aparezca otro boton.. he puesto el siguiente codigo en el apartado en el que hay que indicar lo que se quiere hacer cuando se adquiere el producto pero no funciona:
Código:
boton.setVisibility(View.INVISIBLE);
        premium.setVisibility(View.VISIBLE);

el "boton" es que realiza la compra (el que quiero que se oculte) el "premium" es el que tiene que aparecer el comprar. No se si esta bien eso así o no.. pero no se me ocurre otra cosa de hacerlo..
Os dejo mis codigos de la actividad de compra:

XML:

Código:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.barwill94.wikicraft.PurchaseActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="WikiCraft ES PRO"
        android:layout_marginBottom="6dp"
        android:layout_marginTop="6dp"
        android:id="@+id/textView2"
        android:layout_gravity="center_horizontal"
        android:textSize="30dp"
        android:textColor="@color/Red"
        android:textStyle="bold"/>
<TextView
    android:layout_below="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Compra la versión Pro de Wikicraft ES y desbloquea las siguientes funciones"
    android:layout_marginBottom="16dp"
    android:layout_marginTop="6dp"
    android:id="@+id/textView3"
    android:layout_gravity="center_horizontal"
    android:textSize="20dp"
    android:textColor="@color/Yellow"
    android:textStyle="bold"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Comprar Pro"
        android:id="@+id/boton"
        android:onClick="boton"
        android:layout_below="@+id/textView3"
        android:layout_centerHorizontal="true" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="New Button"
        android:id="@+id/premium"
        android:onClick="premium"

        android:layout_below="@+id/boton"
        android:layout_alignLeft="@+id/boton"
        android:layout_alignStart="@+id/boton"
        android:visibility="gone" />

</RelativeLayout>
JAVA:

Código:
package com.barwill94.wikicraft;

import android.support.v4.app.FragmentActivity;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import com.android.vending.billing.util.*;
import com.barwill94.wikicraft.R;



public class PurchaseActivity
        extends FragmentActivity
        implements IabHelper.OnIabSetupFinishedListener, IabHelper.OnIabPurchaseFinishedListener{

    public static final String SKU = "premium_item";


    private IabHelper billingHelper;
    private Button boton;

   private Button premium;




    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_purchase);
        boton = (Button)findViewById(R.id.boton);
        premium = (Button) findViewById(R.id.button);
        boton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startBuyProcess();
            }
        });

    }

    private void startBuyProcess(){
        String clave = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4nvVUrkfIZoovZSlO+Sn2zpn05nvsLjIHujCKazev4f3HwK5pUhRxJoOv/RVi5O0yw9afUdq68n+IvR+BY5qURLzP4KisCH5+FnMXKjUf9mk0zhxAC3tni9KPwMRKHam6isPp2cTFfx7jhHntAV80SEhPfX7VM9hxBzQ/KtyRT4h9mUHjzbKZJMs8ws2l3DdkbUyu9Cd4dglFjcu0yPbKDNjTHedwu54PoxyXc4GT7N8bE0LYZ/AfJb3lNAren0k/n8PKWxqF5zmZFJQQjad5V3WcsjRxX7KxGBg5Dlbz0uX2SMTlh50JXLVKabCPODOiH1AW00lEnBkYSCF5be1jQIDAQAB";

        billingHelper = new IabHelper(this, clave);
        billingHelper.startSetup(this);
    }



    @Override
    public void onIabSetupFinished(IabResult result) {
        if (result.isSuccess()) {

            try{
                if(billingHelper.queryInventory(true, null).hasPurchase(PurchaseActivity.SKU)){
                    Toast.makeText(this, "Ya tienes este elemento!", Toast.LENGTH_SHORT).show();
                } else {
                    compraElemento();
                }

            } catch(IabException e){
                e.printStackTrace();
            }

        } else {

            errorAlIniciar();
        }

    }


    protected void errorAlIniciar() {
        Toast.makeText(PurchaseActivity.this, "Error al intentar iniciar la compra", Toast.LENGTH_SHORT).show();
    }


    protected void compraElemento() {
        purchaseItem(PurchaseActivity.SKU);
    }


    protected void purchaseItem(String sku) {
        billingHelper.launchPurchaseFlow(this, sku, 123, this);
    }


    @Override
    public void onIabPurchaseFinished(IabResult result, Purchase info) {
        if (result.isFailure()) {
            compraFallida();
        } else if (PurchaseActivity.SKU.equals(info.getSku())) {
            compraCorrecta(result, info);
        }

    }



    /*
     * COSAS QUE QUERAMOS HACER CUANDO SE HAYA
     * ADQUIRIDO EL PRODUCTO CON EXITO
     */
    protected void compraCorrecta(IabResult result, Purchase info)  {
        boton.setVisibility(View.INVISIBLE);
        premium.setVisibility(View.VISIBLE);

        // Consumimos los elementos a fin de poder probar varias compras
        billingHelper.consumeAsync(info, null);

    }

    /*
     * COSAS QUE QUERAMOS HACER CUANDO EL PRODUCTO
     * NO HAYA SIDO ADQUIRIDO
     */

    protected void compraFallida(){

    }


    //LIMPIAMOS
    @Override
    protected void onDestroy() {
        disposeBillingHelper();
        super.onDestroy();
    }

    private void disposeBillingHelper() {
        if (billingHelper != null) {
            billingHelper.dispose();
        }
        billingHelper = null;
    }



}
He utilizado una compra de prueba y llego a comprar el producto pero luego se queda todo igual.. a ver si alguien puede ayudarme.. llevo ya un par de semanas buscando y dando vueltas para ver como puedo hacerlo..

Gracias!
Responder Con Cita


  #2  
Viejo 26/06/14, 22:47:46
Array

[xs_avatar]
Deja_vu Deja_vu no está en línea
Miembro del foro
 
Fecha de registro: abr 2012
Localización: La Plata, Argetnina
Mensajes: 364
Modelo de smartphone: Galaxy Nexus
Tu operador: Movistar
Porque en lugar de ocultar el boton no usas el mismo cambiando la funcionalidad dependiendo si compro o no?
__________________
Responder Con Cita
Gracias de parte de:
  #3  
Viejo 26/06/14, 22:49:55
Array

[xs_avatar]
Guixe94 Guixe94 no está en línea
Desarrollador
 
Fecha de registro: abr 2012
Localización: Barcelona, Catalunya
Mensajes: 900
Modelo de smartphone: HTC ONE y Galaxy Note 3
Tu operador: Orange
 Cita: Originalmente Escrito por Deja_vu Ver Mensaje
Porque en lugar de ocultar el boton no usas el mismo cambiando la funcionalidad dependiendo si compro o no?

como podría hacer eso?

Gracias por tu respuesta no se me había ocurrido
Responder Con Cita
  #4  
Viejo 27/06/14, 10:59:45
Array

[xs_avatar]
ctkd17 ctkd17 no está en línea
Usuario poco activo
 
Fecha de registro: feb 2012
Mensajes: 37
Modelo de smartphone: Sony xperia neo V
Tu operador: Pepephone
Código:
if(compro){
      boton.setOnClickListener(new OnClickListener() {
@Override public void onClick(View view) { /*Codigo en caso compra*/ }
}else{
boton.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { /*Codigo en caso NO compra*/ }
}

Última edición por ctkd17 Día 27/06/14 a las 11:04:04. Razón: Erro
Responder Con Cita
Respuesta

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

Herramientas


Hora actual: 00:16:34 (GMT +2)



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

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