java - 将 ImageView 设置为 android fragment 中的 URL

标签 java android android-fragments

我希望我的 imageView 能够在用户单击时打开 url/link。我搜索了一些示例,但大多数情况下它不适合 fragment 。谁能帮帮我?

HomeFragment.java

public class HomeFragment extends Fragment{

{


public HomeFragment(){}

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

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

    ImageView img = (ImageView)rootView.findViewById(R.id.imageViewTwitter);
    img.setOnClickListener(new View.OnClickListener(){
        public void onClick(View v){
            Intent intent = new Intent();
            intent.setAction(Intent.ACTION_VIEW);
            intent.addCategory(Intent.CATEGORY_BROWSABLE);
            intent.setData(Uri.parse("http://twitter.com"));
            startActivity(intent);
        }
    });

    ImageView img2 = (ImageView)rootView.findViewById(R.id.imageViewIG);
    img.setOnClickListener(new View.OnClickListener(){
        public void onClick(View v){
            Intent intent = new Intent();
            intent.setAction(Intent.ACTION_VIEW);
            intent.addCategory(Intent.CATEGORY_BROWSABLE);
            intent.setData(Uri.parse("https://www.instagram.com/?hl=en"));
            startActivity(intent);
        }
    });

    ImageView img3 = (ImageView)rootView.findViewById(R.id.imageViewFB);
    img.setOnClickListener(new View.OnClickListener(){
        public void onClick(View v){
            Intent intent = new Intent();
            intent.setAction(Intent.ACTION_VIEW);
            intent.addCategory(Intent.CATEGORY_BROWSABLE);
            intent.setData(Uri.parse("https://www.facebook.com"));
            startActivity(intent);
        }
    });
    return rootView;


}}

fragmnet_main.xml

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/back"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.eventstory.MainActivity$PlaceholderFragment" >

<ImageView
    android:id="@+id/imageView2"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:scaleType="fitXY"
    android:src="@drawable/homepage" />

<ImageView
    android:id="@+id/imageViewIG"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/imageView2"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="20dp"
    android:src="@drawable/instagramlogo"

    />

<ImageView
    android:id="@+id/imageViewTwitter"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_alignTop="@+id/imageViewIG"
    android:src="@drawable/twitter" />

<ImageView
    android:id="@+id/imageViewFB"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/imageView2"
    android:layout_alignTop="@+id/imageViewIG"
    android:src="@drawable/logofacebook" />

唯一可用的 ImageViewimageViewTwitter 但它链接到 facebook.com 而不是 twiiter。另一个 ImageView 不工作

最佳答案

必须满足:

...
...
      ImageView img = (ImageView)rootView.findViewById(R.id.imageViewTwitter);
        img.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v){
              Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://twitter.com"));
    getActivity().startActivity(intent);    
            }
        });

        ImageView img2 = (ImageView)rootView.findViewById(R.id.imageViewIG);
        img2.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v){
              Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.instagram.com/?hl=en"));
    getActivity().startActivity(intent);
            }
        });

        ImageView img3 = (ImageView)rootView.findViewById(R.id.imageViewFB);
        img3.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v){
              Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.gmail.com"));
    getActivity().startActivity(intent);
                intent.setData(Uri.parse("https://www.facebook.com"));
                startActivity(intent);
            }
        });
...
...

您的问题是您正在将 onClickListeners 分配给同一个 ImageView (img)!

  ImageView img2 = (ImageView)rootView.findViewById(R.id.imageViewIG);
  img.setOnClickListener...

  ImageView img3 = (ImageView)rootView.findViewById(R.id.imageViewIG);
  img.setOnClickListener...

关于java - 将 ImageView 设置为 android fragment 中的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34292973/

相关文章:

java - 重新启动 Activity 以 IllegalStateException 结束

android - logcat 没有显示我的程序 android 的任何日志记录

java - 从警报中设置 TextView 的值

java - MongoDB: "can' t 保存部分对象”异常

java - 如何将实例变量传递给 Quartz 作业?

java - 在屏幕上旋转时,仅应显示视频

java - 在 ScrollView 中以编程方式创建 View

android - 在 fragment 中处理 onBackPressed

android - 始终在 Android 中使用 fragment

java - 高分辨率 Android 手机中的文本显示较小