全球布尔人仅从事碎片而不是实际活动

  • 本文关键字:活动 碎片 布尔人 android
  • 更新时间 :
  • 英文 :


我有一个我在puplyHelper.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);
        }

好吧,如果我放入 mpurchases1 = puphoyHelper.createinstance(); 在ongreate和oncreateview中的其他代码中,则可以在我的片段中效果很好。

但是,当我尝试在实际活动中(在ongreate中)而不是具有onCreateview的片段中的上述代码的任何组合时,它无济于事。知道我缺少什么吗?

按DieGodeveloper的要求。这是我的paskurehelper.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 HomeFragmentThree extends Fragment {
private ArrayList<String> threeDaysDateLabels = new ArrayList<>();
private ArrayList<Double> threeDaysKpValues = new ArrayList<>();
private ArrayList<String> twentySevenDaysDateLabels = new ArrayList<>();
private ArrayList<Double> twentySevenDaysKpValues = new ArrayList<>();
private LineChartView threeDayChart, twentySevenDayChart;
private ProgressBar chartsProgress,chartsProgress2;
private TextView threeDaysDates, twentySevenDaysDates, chartDisabled;
PurchaseHelper mPurchases1;

public HomeFragmentThree() {
    // Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    ////View rootView= inflater.inflate(R.layout.fragment_three, container, false);
    View view = inflater.inflate(R.layout.fragment_three, container, false);
    mPurchases1 = PurchaseHelper.createInstance();
    setUI(view);
    getData();


    if(mPurchases1.isPurchased(Features.UpgradePro) || mPurchases1.isPurchased(Features.UpgradeProDiscounted) || mPurchases1.isPurchased(Features.UpgradeProDiscount) || mPurchases1.isPurchased(Features.UpgradeProSubscription)) {
        twentySevenDayChart.setVisibility(View.VISIBLE);
        twentySevenDaysDates.setVisibility(View.VISIBLE);
        chartDisabled.setVisibility(View.GONE);
    }else {
        twentySevenDayChart.setVisibility(View.GONE);
        twentySevenDaysDates.setVisibility(View.GONE);
        chartDisabled.setVisibility(View.VISIBLE);
    }
    chartDisabled.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(getActivity(), UpgradeNowActivity.class);
            startActivity(intent);
        }
    });

    return view;

}

这是我试图实现相同布尔值的实际活动,而不是片段。布尔检查根本没有做任何事情。我仅包括有关客户隐私问题的相关部分。

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
}

您有一些错误:

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

,不要忘记检查您在清单文件中看到的服务类。

最新更新