我需要点击一下按钮完成三项任务。它看起来像点按钮点击SaveQuote 1)隐藏广告 2)制作布局截图并保存 3)显示Adview
现在我已经实现了在java中执行以上三个任务的方法,如下所示
else if(menuItem.getItemId() == R.id.save_image) {
adView.setVisibility(View.GONE);
saveQuote();
adView.setVisibility(View.VISIBLE);
但我面临的问题是广告始终保持可见。如果我使用ViewGone方法和saveQuote方法比它的工作正常,但如果我添加VISIBLE方法而不是隐藏我的adview。
注意:我没有收到任何错误。我只需要知道如何通过单击按钮
来实现上述三项任务我的saveQuote方法如下所示
private void saveQuote(){
String id=getQuote(mItemIndx).get(KEY_ID);
View v1=null;
List<Fragment> activeFragments=getSupportFragmentManager().getFragments();
for(Fragment fragment:activeFragments){
QuoteCard cardFrag=(QuoteCard)fragment;
if(cardFrag!=null&&cardFrag.mId.equals(id)){
v1=cardFrag.getCardView();
}
}
TextView textView = (TextView)v1.findViewById(R.id.textAuthorSign);
textView.setVisibility(TextView.VISIBLE);
v1.setDrawingCacheEnabled(true);
Bitmap bitmap = Bitmap.createBitmap(v1.getDrawingCache());
v1.setDrawingCacheEnabled(false);
ImageLoader.getInstance().saveQuoteImage(bitmap);
Snackbar.make(v1,"Quote Saved",Snackbar.LENGTH_SHORT).show();
adView.setVisibility(View.VISIBLE);
}
如果在saveQuote结束时设置了VISIBLE方法
,我会收到类似下面的错误java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.gms.ads.NativeExpressAdView.setVisibility(int)' on a null object reference
由于
答案 0 :(得分:1)
你可以这样做。
adView.setVisibility(View.GONE);
saveQuote();
设置完所有逻辑后,现在在你的saveQuote()方法中..添加最后一行..
adView.setVisibility(View.VISIBLE);
请注意,您的adView应该全局定义,并且您已初始化了adVIew。
答案 1 :(得分:0)
您应该查看&#34; Handle,Looper,Message&#34;
adView.setVisibility(View.GONE);
saveQuote();
adView.post(runable)
Runnable runable=new Runnable(){
@Override
public void run(){
adView.setVisibility(View.VISIBLE);
}
}
答案 2 :(得分:0)
宣布为全球
final Handler handler = new Handler();
像这样更改你的代码
else if(menuItem.getItemId() == R.id.save_image) {
adView.setVisibility(View.GONE);
saveQuote();
handler.postDelayed(new Runnable()
{ @Override public void run() {
adView.setVisibility(View.VISIBLE); } }, 5000);
}
如果不需要那么多延迟是5秒,减少延迟。