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  
Viejo 26/06/14, 22:45:46
Avatar de Guixe94
Guixe94 Guixe94 no está en línea
Desarrollador
Mensajes: 900
 
Fecha de registro: abr 2012
Localización: Barcelona, Catalunya
Mensajes: 900
Modelo de smartphone: HTC ONE y Galaxy Note 3
Versión de ROM: Ultima Orange Stock
Tu operador: Orange
Mencionado: 0 comentarios
Tagged: 0 hilos
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
Avatar de Deja_vu
Deja_vu Deja_vu no está en línea
Miembro del foro
Mensajes: 364
 
Fecha de registro: abr 2012
Localización: La Plata, Argetnina
Mensajes: 364
Modelo de smartphone: Galaxy Nexus
Versión de ROM: 4.3
Tu operador: Movistar
Mencionado: 1 comentarios
Tagged: 0 hilos
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
Avatar de Guixe94
Guixe94 Guixe94 no está en línea
Desarrollador
Mensajes: 900
 
Fecha de registro: abr 2012
Localización: Barcelona, Catalunya
Mensajes: 900
Modelo de smartphone: HTC ONE y Galaxy Note 3
Versión de ROM: Ultima Orange Stock
Tu operador: Orange
Mencionado: 0 comentarios
Tagged: 0 hilos
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
Avatar de ctkd17
ctkd17 ctkd17 no está en línea
Usuario poco activo
Mensajes: 37
 
Fecha de registro: feb 2012
Mensajes: 37
Modelo de smartphone: Sony xperia neo V
Versión de ROM: CROM kk v5.9 20140413
Tu operador: Pepephone
Mencionado: 0 comentarios
Tagged: 0 hilos
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   HTCMania > Todo sobre Android > Programación y Desarrollo para Android


Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 21:23:07 (GMT +1)

Cookies settings
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007