如何打开从的ImageButton网页视图?(How to open a webview from

2019-10-22 05:55发布

我有一个片段三个按钮,当用户点击一个链接后,会打开应用程序中的特定网页。 当我尝试在手机上运行该代码时,我尝试访问选项卡崩溃。

我的.java类就在这里:

public class SocialMediaFragment extends Fragment {

public ImageButton fbbutton;
public ImageButton twbutton;
public ImageButton igbutton;

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

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

    fbbutton = (ImageButton) getActivity().findViewById(R.id.fbbutton);
    twbutton = (ImageButton) getActivity().findViewById(R.id.twbutton);
    igbutton = (ImageButton) getActivity().findViewById(R.id.igbutton);

    fbbutton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.facebook.com/universityofhouston"));
            startActivity(browserIntent);
        }
    });

    twbutton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("website"));
            startActivity(browserIntent);

        }});

    igbutton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("website"));
            startActivity(browserIntent);

        }});
    return rootView;

}
}

这里是我使用的片段(XML)文件:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/uhwallpaper">

    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/fbbutton"
        android:background="@drawable/fb"
        android:layout_marginStart="46dp"
        android:layout_centerVertical="true"
        android:layout_alignParentStart="true" />


    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/twbutton"
        android:background="@drawable/twitter"
        android:layout_above="@+id/igbutton"
        android:layout_toEndOf="@+id/fbbutton"
        android:layout_marginStart="43dp" />



    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/igbutton"
        android:background="@drawable/instagram"
        android:layout_below="@+id/fbbutton"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="32dp" />



    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/socialslogan"
        android:background="@drawable/slogan_social"
        android:layout_alignParentTop="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="16dp" />

</RelativeLayout>

我希望这是可以解决的! 如果您需要任何详细信息,让我知道。

这是我的错误报告:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageButton.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
        at info.teammumu.cougarcardapp.SocialMediaFragment.onCreateView(SocialMediaFragment.java:28)

Answer 1:

你fbbutton从未分配。 它是零,因为它是在默认情况下。 初始化它就像通过findViewById从布局其它视图()。



Answer 2:

1)你是一个片段里面,所以你必须的元素里面的布置来定义fragment_socialmedia.xml

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

   mDrawerLayout = (DrawerLayout) rootView.findViewById(R.id.drawer_layout);
    mDrawerList = (ListView) rootView.findViewById(R.id.list_slidermenu);
    fbbutton = (ImageButton) rootView.findViewById(R.id.fbbutton);
    twbutton = (ImageButton) rootView.findViewById(R.id.twbutton);
    igbutton = (ImageButton) rootView.findViewById(R.id.igbutton);

2),添加@overrideonClick方法:

 fbbutton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {


            Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.facebook.com/universityofhouston"));
            startActivity(browserIntent);


        }});


Answer 3:

首先,我认为它应该工作Elenasys是假设的方式。 另一种尝试是改变你的布局XML和附着在XML中调用方法:

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/uhwallpaper">

<ImageButton
    android:onClick="myMethod"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/fbbutton"
    android:background="@drawable/fb"
    android:layout_marginStart="46dp"
    android:layout_centerVertical="true"
    android:layout_alignParentStart="true" />

...

</RelativeLayout>

然后,你必须写你的活动里面的方法牵着你的片段是这样的:

/**
* Method inside the activity holding your fragment.
*/
public void myMethod(View view){
    Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.facebook.com/universityofhouston"));
    startActivity(browserIntent);
}

帮助?



Answer 4:

原来,问题是这些家伙:

fbbutton = (ImageButton) getActivity().findViewById(R.id.fbbutton);
twbutton = (ImageButton) getActivity().findViewById(R.id.twbutton);
igbutton = (ImageButton) getActivity().findViewById(R.id.igbutton);

他们应该是:

fbbutton = (ImageButton) rootView.findViewById(R.id.fbbutton);
twbutton = (ImageButton) rootView.findViewById(R.id.twbutton);
igbutton = (ImageButton) rootView.findViewById(R.id.igbutton);


文章来源: How to open a webview from imagebutton?