安卓APP 在这种嵌套的情况下该如何执行 public 的方法?

刚刚接触java的安卓开发。
目标是通过内嵌浏览器来实现跨平台。
代码中的 mWebview 就是一个WebView。
目前打算,若一段时间用户没有操作,就进入广告页面(另一个 Activity 的 WebView)。
结果写到这就蒙了。
不知道怎么在外执行 public startAD()。
另:代码位于 onCreate 生命周期。
对Java语法不熟,希望可以稍微详细一点。
感谢。

      mWebview.setOnTouchListener(new View.OnTouchListener() {
            private Handler handler = new Handler();
            private long time = 3*1000;
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                switch (event.getAction()) {
                    case MotionEvent.ACTION_DOWN:
                        handler.removeCallbacks(runnable);
                        break;
                    case MotionEvent.ACTION_UP:
                        startAD();
                        break;
                }
                return false;
            }
            private Runnable runnable = new Runnable() {
                @Override
                public void run() {
                    //跳转到广告页面
                    Toast.makeText(getApplicationContext(), "前往广告",
                            Toast.LENGTH_SHORT).show();
                }
            };
            public void startAD() {
                handler.removeCallbacks(runnable);
                handler.postDelayed(runnable, time);
            }
        });
        //需要在在外边调用一次 startAD ,否则倘若屏幕一直都没有点击的话,就不会进入广告页。
阅读 2.1k
1 个回答
private Handler handler = new Handler();
private long time = 3*1000;
private Runnable runnable = new Runnable() {
                @Override
                public void run() {
                    //跳转到广告页面
                    Toast.makeText(getApplicationContext(), "前往广告",
                            Toast.LENGTH_SHORT).show();
                }
            };
public void startAD() {
                handler.removeCallbacks(runnable);
                handler.postDelayed(runnable, time);
            }
            
@override onCreate(Bundle bundle){
mWebview.setOnTouchListener(new View.OnTouchListener() {
            
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                switch (event.getAction()) {
                    case MotionEvent.ACTION_DOWN:
                        handler.removeCallbacks(runnable);
                        break;
                    case MotionEvent.ACTION_UP:
                        startAD();
                        break;
                }
                return false;
            }
           
        });
        //需要在在外边调用一次 startAD ,否则倘若屏幕一直都没有点击的话,就不会进入广告页。
}

虽然给你回答了,但这样的问题比较低级,给你踩了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题