如何从带有按钮的片段中打开网页视图中的网页?

Posted

技术标签:

【中文标题】如何从带有按钮的片段中打开网页视图中的网页?【英文标题】:how can i open a webpage in a webview from a fragment with buttons? 【发布时间】:2014-12-20 19:53:09 【问题描述】:

我在这里阅读了https://***.com/users/1116216/michele-la-ferla (michele la ferla) 的答案:how can i open a webpage in a webview from a fragment? 但是当您在“layout.xml”文件中有更多用于更多 URL 的按钮时, 如何修改你的“片段类”文件? 这是我的第一个按钮的代码,错误在哪里?:

   private Dialog WebDialog1;
    private WebView URL1;
    private Button button0;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 

        final View rootView = inflater.inflate(R.layout.fragmentsite, container, false);

        button0 = (Button) rootView.findViewById(R.id.button0);
        button0.setOnClickListener(new OnClickListener() 

            @Override
            public void onClick(View v) 
                WebDialog1 = new Dialog(getActivity());
                WebDialog1.requestWindowFeature(Window.FEATURE_NO_TITLE);
                WebDialog1.setContentView(R.layout.sitef);
                WebDialog1.setCancelable(true);

                URL1 = (WebView) rootView.findViewById(R.id.webview);
                URL1.setWebViewClient(new WebViewClient());
                URL1.setScrollbarFadingEnabled(true);
                URL1.setHorizontalScrollBarEnabled(false);
                URL1.getSettings().setjavascriptEnabled(true);
                URL1.loadUrl("http://www.dhfhfhfh.com/Home.php");

                WebDialog1.show();
            



        );return rootView;'

【问题讨论】:

我不太明白你的问题。您是否有 2 个按钮,并且每次单击按钮时都想打开不同的网页? 【参考方案1】:

如果我很好地理解了您的问题,那么您的场景由以下内容组成:

    具有多个按钮的布局文件。 每个按钮在 web 视图中加载不同的 url。

考虑到这些,我会在每个按钮上使用一个 ActionListener 来实现它,并发送参数以在 ActionEvent 的 webview 中加载 url。

片段事件:

public class EventFragment extends Fragment 

private Dialog WebDialog1, WebDialog2;
private WebView URL1, URL2;
private Button btnURL1, btnURL2;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 

    View rootView = inflater.inflate(R.layout.main_layout, container, false);

    btnURL1 = (Button) rootView.findViewById(R.id.btnURL1);
    btnURL1.setOnClickListener(new OnClickListener() 

        @Override
        public void onClick(View v) 
            WebDialog1 = new Dialog(getActivity());
            WebDialog1.requestWindowFeature(Window.FEATURE_NO_TITLE);
            WebDialog1.setContentView(R.layout.web_layout);
            WebDialog1.setCancelable(true);                  

            URL1 = (WebView) WebDialog.findViewById(R.id.url1);  
            URL1.setWebViewClient(new WebViewClient());
            URL1.setScrollbarFadingEnabled(true);  
            URL1.setHorizontalScrollBarEnabled(false);  
            URL1.getSettings().setJavaScriptEnabled(true);
            URL1.getSettings().setUserAgentString("First Webview");  
            URL1.loadUrl("//the first url goes here");

            WebDialog1.show();
        

    btnURL2 = (Button) rootView.findViewById(R.id.btnURL2);
    btnURL2.setOnClickListener(new OnClickListener() 

        @Override
        public void onClick(View v) 
            WebDialog2 = new Dialog(getActivity());
            WebDialog2.requestWindowFeature(Window.FEATURE_NO_TITLE);
            WebDialog2.setContentView(R.layout.web_layout);
            WebDialog2.setCancelable(true);                  

            URL2 = (WebView) WebDialog.findViewById(R.id.url2);  
            URL2.setWebViewClient(new WebViewClient());
            URL2.setScrollbarFadingEnabled(true);  
            URL2.setHorizontalScrollBarEnabled(false);  
            URL2.getSettings().setJavaScriptEnabled(true);
            URL2.getSettings().setUserAgentString("Second Webview");  
            URL2.loadUrl("//the second url goes here");

            WebDialog2.show();
        

    );
    return rootView;

main_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_ >

    <Button
        android:id="@+id/btnURL1"
        android:layout_
        android:layout_
        android:layout_centerHorizontal="true"

    <Button
        android:id="@+id/btnURL2"
        android:layout_
        android:layout_
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"

</RelativeLayout>

web_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_
    android:orientation="vertical" >

    <RelativeLayout
        android:id="@+id/rl_relativeLayout"
        android:layout_
        android:layout_
        android:layout_gravity="center_horizontal"
        android:layout_margin="10dip"
        android:layout_weight="0.82" >

        <TextView
            android:id="@+id/Title"
            android:layout_
            android:layout_
            android:layout_alignParentLeft="true"
            android:layout_alignParentRight="true"
            android:gravity="center"
            android:text="Buy your Tickets:" />

        <WebView
            android:id="@+id/ticketline"
            android:layout_
            android:layout_
            android:layout_below="@id/Title"
            android:layout_marginTop="5dip" />
    </RelativeLayout>

</LinearLayout>

在此期间,我会查看buttons 和ActionListeners 的官方 Android 文档。

【讨论】:

如果这对您有帮助,请您接受答案吗? 您能否取消与第 3 点相关的代码“在这种情况下,Webview 是在对话框中加载的,使用户能够在 backpress 上返回您的应用程序。”?我只需要每个按钮在片段的 web 视图中加载不同的 url。但是为什么不使用“如果”和“如果也”呢?感谢您提前帮助我.... 我编辑了代码以获得您想要的。您只需复制和粘贴即可。我没有使用 if 语句,因为每个按钮上都有一个动作监听器,代码更简洁。 如果对您有帮助,请您接受这个问题吗?否则,我将非常乐意为您提供进一步的帮助。 我编辑了问题中的代码,错误在哪里?为什么你使用“WebConn”,我可以使用“new WebViewClient”吗?

以上是关于如何从带有按钮的片段中打开网页视图中的网页?的主要内容,如果未能解决你的问题,请参考以下文章

从 Web 视图打开视图控制器

HTML代码片段

HTML代码片段

如何直接在网页中打开文件 不出现下载保存提示框!

如何让新标签页打开新标签页中的网页。

如何设置谷歌浏览器启动时打开特定网页?