代码之家  ›  专栏  ›  技术社区  ›  VINIT MANDLESHA

触摸第三个选项卡时,用户应该能够拨打电话。但用户被重定向为在触摸第二个标签时进行呼叫,这是一个错误的标签

  •  0
  • VINIT MANDLESHA  · 技术社区  · 10 年前

    活动在选项卡栏上有三个选项卡。第一和第二选项卡用于显示网页,而第三选项卡用于从应用程序拨打电话。

    情况: 当用户触摸第一个选项卡的第二个选项卡时,用户被重定向到不应该是的电话呼叫应用程序,然后它显示正确的应该是的网页。在触摸第三个选项卡时,它显示空白片段,而不是打电话。但是,当用户从第三个选项卡转到第二个选项卡时,它会显示正确的网页,不会转移到手机应用程序。同样,当我从第一个选项卡转到第三个选项卡时,它会重定向用户打电话。请注意,第三个选项卡仅用于拨打电话。

    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstancestate) {
        View layout = inflater.inflate(R.layout.fragment_myfragment, container, false);
        Bundle bundle = getArguments();
        web_personal = (WebView) layout.findViewById(R.id.webView);
        WebSettings webSettings = web_personal.getSettings();
        webSettings.setJavaScriptEnabled(true);
    
        if (bundle != null) {
            if (bundle.getString("activity") == "Personal") {
                if (bundle.getInt("position") == 0) {
                    web_personal.loadUrl("http://www.xxxxxxx.in/inddddddn/view/26/Hexxx%20xxxxx/");
                } else if (bundle.getInt("position") == 1) {
                    web_personal.loadUrl("http://www.xxxxxxxx.in/xxxxxx/view/34/Senior%20Citizen%2xxxxxx/");
                } else if (bundle.getInt("position") == 2) {
                    web_personal.loadUrl("http://www.xxxxxxx.in/xxxxx/view/25/Personal%20xxxxx%2dddddd%20xxx/");
                }
            } else if (bundle.getString("activity") == "Home")
            {
                if (bundle.getInt("position") == 0) {
                    web_personal.loadUrl("http://www.xxxxxxxxxx.in/");
                }
               else if (bundle.getInt("position") == 1) {
                  web_personal.loadUrl("http://www.xxxxxxxxxxxx.in/contactus/");
                }
                else if(bundle.getInt("position") == 2)
                {
                   Intent callIntent = new Intent(Intent.ACTION_CALL);
                   callIntent.setData(Uri.parse("tel:0980000000"));
                   startActivity(callIntent);
                }
            }
        }
            return layout;
        }
    

    Layout of tab bar

    如果我使用webview的loadUrl函数来显示网页,而不是调用函数,那么它会根据If子句中满足的条件来显示网页。因此,我们可以否定if子句的逻辑问题。

    1 回复  |  直到 10 年前
        1
  •  0
  •   peeyush pathak    10 年前

    存在这个问题是因为缓存视图。 如果您调试应用程序,您将看到当您到达第二个选项卡时,您的onCreateView和onResume将被调用 所以有办法: 首先从onCreateView中删除代码

    yourViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            ...
            @Override
            public void onPageSelected(int position) {
                if(position==2)
                 //call your method in 3rd fragment
            }
        });