2017-12-02 11 views
0

私はPurchaseHelper.javaグローバル断片のみで働くブールではなく、実際の活動

 purchaseHelper1.mPurchaseItems.add(new PurchaseItem(SKU_ISSUE_PRO_UPGRADE,false, Features.UpgradePro)); 

を設定するグローバルなブール値を持っている今、私は私の活動のいずれかで、このようにそれをチェックし、それが本当ならば、それは非表示になりますいくつかのレイアウト:私は置けば

 mPurchases1 = PurchaseHelper.createInstance(); 
     if(mPurchases1.isPurchased(Features.UpgradePro) { 
      mAdView.setVisibility(View.GONE); 
      mAdLayout.setVisibility(View.GONE); 
     } 

OK]をクリックして、mPurchases1 = PurchaseHelper.createInstance()私の断片で罰金と素晴らしい作品。 oncreateには、残りのコードはoncreateviewにあります。

しかし、実際のアクティビティ(oncreate)で上記のコードを組み合わせてみると、oncreateviewを持つフラグメントではありませんが、何もしません。私が逃しているものは何ですか?

DiegoDeveloperが要求したとおりです。ここに私のPurchaseHelper.javaファイルがあります

public class PurchaseHelper { 


public static final String SKU_ISSUE_PRO_UPGRADE = "pro"; 
public static final String SKU_ISSUE_PRO_UPGRADE_DISCOUNT = "prodiscount"; 
public static final String SKU_ISSUE_PRO_UPGRADE_DISCOUNTED = "prodiscounted"; 
public static final String SKU_ISSUE_PRO_UPGRADE_SUBSCRIPTION= "prosubscription"; 

private static final String LOG_TAG = PurchaseHelper.class.getSimpleName(); 
private static final int RC_REQUEST = 10001; 
private IabHelper mHelper; 


ArrayList<PurchaseItem> mPurchaseItems= new ArrayList<PurchaseItem>(); 

private static PurchaseHelper mInstance; 

public static PurchaseHelper createInstance(){ 
    if (mInstance==null){ 
     PurchaseHelper purchaseHelper1 = new PurchaseHelper(); 
     purchaseHelper1.mPurchaseItems= new ArrayList<PurchaseItem>(); 
     purchaseHelper1.mPurchaseItems.add(new PurchaseItem(SKU_ISSUE_PRO_UPGRADE,false, Features.UpgradePro)); 
     purchaseHelper1.mPurchaseItems.add(new PurchaseItem(SKU_ISSUE_PRO_UPGRADE_DISCOUNT,false,Features.UpgradeProDiscount)); 
     purchaseHelper1.mPurchaseItems.add(new PurchaseItem(SKU_ISSUE_PRO_UPGRADE_DISCOUNTED,false,Features.UpgradeProDiscounted)); 
     purchaseHelper1.mPurchaseItems.add(new PurchaseItem(SKU_ISSUE_PRO_UPGRADE_SUBSCRIPTION, true,Features.UpgradeProSubscription)); 

     mInstance =purchaseHelper1; 
    } 

    return mInstance; 
} 

public boolean isPurchased(Features feature){ 
    /* 
    //TODO remove 
    return true; 
    */ 

    Boolean result = false; 

    for (PurchaseItem item:mPurchaseItems) { 
     if (item.IsPurchased && item.SKU.equals(SKU_ISSUE_PRO_UPGRADE_DISCOUNT)){ 
      return true; 
     } 
     if (item.IsPurchased && item.SKU.equals(SKU_ISSUE_PRO_UPGRADE)){ 
      return true; 
     } 
     if (item.IsPurchased && item.SKU.equals(SKU_ISSUE_PRO_UPGRADE_DISCOUNTED)){ 
      return true; 
     } 
     if (item.IsPurchased && item.SKU.equals(SKU_ISSUE_PRO_UPGRADE_SUBSCRIPTION)){ 
      return true; 
     } 
     if (item.IsPurchased && item.IsFeature==true && item.FeatureName == feature){ 
      return true; 
     } 
    } 

    return result; 

} 

public boolean showPurchaseDialog(){ 
    /* 
    //TODO remove 
    return false; 
    */ 

    for (PurchaseItem item:mPurchaseItems) { 
     if (item.IsPurchased && item.SKU.equals(SKU_ISSUE_PRO_UPGRADE)){ 
      return false; 
     } 
     if (item.IsPurchased && item.SKU.equals(SKU_ISSUE_PRO_UPGRADE_DISCOUNT)){ 
      return false; 
     } 
     if (item.IsPurchased && item.SKU.equals(SKU_ISSUE_PRO_UPGRADE_DISCOUNTED)){ 
      return false; 
     } 
     if (item.IsPurchased && item.SKU.equals(SKU_ISSUE_PRO_UPGRADE_SUBSCRIPTION)){ 
      return false; 
     } 
    } 
    for (PurchaseItem item:mPurchaseItems) { 
     if (item.IsPurchased==false && item.IsFeature==true){ 
      return true; 
     } 
    } 
    return false; 

} 

public ArrayList<PurchaseItem> getItems(){ 
    return mPurchaseItems; 
} 
public void setPurchases(String sku){ 
    for (PurchaseItem item:mPurchaseItems) { 
     if (item.SKU.equals(sku)){ 
      item.IsPurchased = true; 
     } 
    } 
} 

public void resetPurchases(){ 
    for (PurchaseItem item:mPurchaseItems) { 
     item.IsPurchased = false; 
    } 
} 

public static String md5(String s) { 
    try { 
     // Create MD5 Hash 
     MessageDigest digest = MessageDigest.getInstance("MD5"); 
     digest.update(s.getBytes()); 
     byte messageDigest[] = digest.digest(); 

     // Create Hex String 
     StringBuffer hexString = new StringBuffer(); 
     for (int i=0; i<messageDigest.length; i++) 
      hexString.append(Integer.toHexString(0xFF & messageDigest[i])); 
     return hexString.toString(); 

    } catch (NoSuchAlgorithmException e) { 
     e.printStackTrace(); 
    } 
    return ""; 
} 

ここにコードがうまくいきます。私はクライアントのプライバシーに関する懸念事項に関連する部分のみを含んでいました。

ここでは、フラグメントではない実際のアクティビティに対して同じブール値チェックを実装しようとしています。ブールチェックは何もしません。私はクライアントのプライバシーに関する懸念事項に関連する部分のみを含んでいました。

public class swpcAlertsActivity extends AppCompatActivity { 
@BindView(R.id.swipeRefreshLayout) 
SwipeRefreshLayout mSwipeRefreshLayout; 

@BindView(R.id.itemsRecyclerView) 
RecyclerView mRecyclerView; 

private ProductAdapter mRecyclerAdapter; 
private IabHelper mHelper; 
private AdView mAdView; 
private LinearLayout mAdLayout; 
private TextView adText1; 
private TextView adText2; 
PurchaseHelper mPurchases1; 

private List<ProductItem> mProductList; 
private List<ProductItem> mRecentProductList = new ArrayList<>(5); 




@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_swpc); 
    mPurchases1 = PurchaseHelper.createInstance(); 




    //// initialize admob banner ad and hiding it if they have the pro version 
    mAdView = (AdView) findViewById(R.id.adView); 
    mAdLayout = (LinearLayout) findViewById(R.id.adLayout); 
    AdRequest adRequest = new AdRequest.Builder() 
      .build(); 
    mAdView.loadAd(adRequest); 
    //// hiding the admob banner on the home fragment if they have the pro version! 
    mAdView = (AdView) findViewById(R.id.adView); 
    mAdLayout = (LinearLayout) findViewById(R.id.adLayout); 





    //// go to upgrade screen if they click on ad text 
    adText1 = (TextView) findViewById(R.id.adText1); 
    adText2 = (TextView) findViewById(R.id.adText2); 
    adText1.setOnClickListener(new View.OnClickListener(){ 
     public void onClick(View v){ 
      Intent intent = new Intent(swpcAlertsActivity.this, UpgradeNowActivity.class); 
      startActivity(intent); 
     } 
    }); 
    adText2.setOnClickListener(new View.OnClickListener(){ 
     public void onClick(View v){ 
      Intent intent = new Intent(swpcAlertsActivity.this, UpgradeNowActivity.class); 
      startActivity(intent); 
     } 
    }); 



    ButterKnife.bind(this); 




    initUI(); 
    callAPI(); 


    //todo 
    //// It is supposed to hide the ads if they have pro version. But the f'ing thing isn't working on this activity. Even though it works fine on HomeContentFragment.java. 
    if(mPurchases1.isPurchased(Features.UpgradePro) || mPurchases1.isPurchased(Features.UpgradeProDiscounted) || mPurchases1.isPurchased(Features.UpgradeProDiscount) || mPurchases1.isPurchased(Features.UpgradeProSubscription)) { 
     mAdView.setVisibility(View.GONE); 
     mAdLayout.setVisibility(View.GONE); 
    } 


} 

private void initUI() { 

    mRecyclerView.setHasFixedSize(true); 
    // use a linear layout manager 
    LinearLayoutManager layoutManager = new LinearLayoutManager(this); 
    mRecyclerView.setLayoutManager(layoutManager); 

    mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { 
     @Override 
     public void onRefresh() { 
      // Refresh items 
      refreshItems(); 
     } 
    }); 
} 

/****************************** List View *******************************/ 
void refreshItems() { 
    callAPI(); 
} 

void onItemsLoadComplete() { 
    // Sort 
    Collections.sort(mProductList, new ToSort()); 

    // Copy recent 35 items 
    mRecentProductList.clear(); 
    Iterator<ProductItem> iterator = mProductList.iterator(); 
    for (int i = 0 ; i < Math.min(5, mProductList.size()) ; i++) { 
     mRecentProductList.add(iterator.next()); 
    } 

    runOnUiThread(new Runnable() { 
     @Override 
     public void run() { 
      // Update the adapter and notify data set changed 
      if (mRecyclerAdapter == null) { 
       mRecyclerAdapter = new ProductAdapter(mRecentProductList); 
       mRecyclerView.setAdapter(mRecyclerAdapter); 
      } else { 
       mRecyclerAdapter.notifyDataSetChanged(); 
      } 

      // Stop refresh animation 
      mSwipeRefreshLayout.setRefreshing(false); 
     } 
    }); 
} 

public class ToSort implements Comparator<ProductItem> { 
    @Override 
    public int compare(ProductItem obj1, ProductItem obj2) { 
     SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); 

     try { 
      Date date1 = format.parse(obj1.issue_datetime); 
      Date date2 = format.parse(obj2.issue_datetime); 

      return date2.compareTo(date1); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 

     return 0; 
    } 
} 

機能クラス:

public enum Features { 
UpgradePro, 
UpgradeProDiscount, 
UpgradeProDiscounted, 
UpgradeProSubscription 
} 
+1

動作しないコードを入力してください – diegoveloper

+0

完了しました。デベロッパー – Photogd

+0

は、 – diegoveloper

答えて

1

あなたは多少の誤差があります。

if (item.IsPurchased && item.IsFeature==true && item.FeatureName == feature){ 
      return true; 
     } 

をそして、私はあなたのマニフェストファイルで見るように、あなたのサービスクラスをチェックすることを忘れないでください。

関連する問題