当前结束后开始 activity

Start activity after finish current

我需要一键完成三个任务。它看起来像点击名为 SaveQuote 的按钮 1) 隐藏广告 2)制作布局截图并保存 3) 显示广告

现在我已经在我的 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

谢谢

你应该复习一下"Handle,Looper,Message"

adView.setVisibility(View.GONE); saveQuote(); adView.post(runable) Runnable runable=new Runnable(){ @Override public void run(){ adView.setVisibility(View.VISIBLE); } }

你可以这样做。

adView.setVisibility(View.GONE);
saveQuote();

现在在你的 saveQuote() 方法中,在你的所有逻辑都设置好后.. 添加最后一行..

adView.setVisibility(View.VISIBLE); 请注意,您的 adView 应该是全局定义的,并且您已经初始化了 adVIew。

声明为全局

 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秒,如果不需要那么多就减少延迟。