如何从片段内的列表视图打开链接网址?

Posted

技术标签:

【中文标题】如何从片段内的列表视图打开链接网址?【英文标题】:How to open link Url from listview inside fragment? 【发布时间】:2021-05-17 01:34:53 【问题描述】:

如果我在片段中有一个列表视图,它有一个自定义布局、一个数组适配器、一个片段类和一个数组类。 如果我想在单击列表视图中包含的列表时打开链接,我应该如何以及在哪里放置代码?

我已尝试将以下代码放入片段类中,但是当我尝试单击可用列表时,我的应用程序强制关闭。我的代码错了吗?

list_fish_easy.setOnItemClickListener(new AdapterView.OnItemClickListener() 
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) 

            Intent linkEasy = new Intent(Intent.ACTION_VIEW, Uri.parse(String.valueOf(arrayListeasy)));
            startActivity(linkEasy);

        
    );

我想要的是我可以打开arraylist中包含的链接,如下所示

public class Fish extends Fragment 
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable final ViewGroup container, @Nullable Bundle savedInstanceState) 
    final View view = inflater.inflate(R.layout.fish_layout, container, false);
    ListView list_fish_easy = (ListView) view.findViewById(R.id.list_fish_easy);
   
    final ArrayList<Animal> arrayListeasy= new ArrayList<>();
    arrayListeasy.add(new Animal("Contoh Nama 1", "Easy", "Ominvore", "7.5", "30 C", "http://images.google.com/images?um=1&hl=en&safe=active&nfpr=1&q=cabomba_aquatica"));
    arrayListeasy.add(new Animal("Contoh Nama 2", "Moderate", "Ominvore", "7.5", "30 C", "http://images.google.com/images?um=1&hl=en&safe=active&nfpr=1&q=cabomba_aquatica"));
    arrayListeasy.add(new Animal("Contoh Nama 3", "Difficult", "Ominvore", "7.5", "30 C", "http://images.google.com/images?um=1&hl=en&safe=active&nfpr=1&q=cabomba_aquatica"));

          final AnimalAdapter animalAdaptereasy = new AnimalAdapter(getContext(), R.layout.list_fish, arrayListeasy);
   
    list_fish_easy.setAdapter(animalAdaptereasy);
    
    list_fish_easy.setOnItemClickListener(new AdapterView.OnItemClickListener() 
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) 

            Intent linkEasy = new Intent(Intent.ACTION_VIEW, Uri.parse(String.valueOf(arrayListeasy)));

            if(linkEasy.resolveActivity(requireContext().getPackageManager()) != null) 
                startActivity(linkEasy);
            

        
    );

    return view;

我对创建 android 程序非常陌生。请帮忙

【问题讨论】:

你遇到了什么错误? @Jayanthvn 我收到此错误“android.content.ActivityNotFoundException: No Activity found to handle Intent” 你有什么 String.valueOf(arrayListeasy) ? @KamilJeglikowski 我有这个名单,final ArrayList&lt;Animal&gt; arrayListeasy= new ArrayList&lt;&gt;(); arrayListeasy.add(new Animal("Discus", "Easy", "Carnivore", "7.5", "30 C", "http://images.google.com/images?um=1&amp;hl=en&amp;safe=active&amp;nfpr=1&amp;q=discus")); 【参考方案1】:

您正在尝试从整个数组列表中打开 url

Intent linkEasy = new Intent(Intent.ACTION_VIEW, Uri.parse(String.valueOf(arrayListeasy)));

Uri.parse(String.valueOf(arrayListeasy)

你应该从你的arraylist 中获得带有 url 的确切字段 会是这样的

Uri.parse(String.valueOf(arrayListeasy.get(position).getYourUrlProperty());

完整代码

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) 

            Intent linkEasy = new Intent(Intent.ACTION_VIEW, Uri.parse(String.valueOf(arrayListeasy.get(position).getYourUrlProperty());

            if(linkEasy.resolveActivity(requireContext().getPackageManager()) != null) 
                startActivity(linkEasy);
            

        

你也可以摆脱 String.valueOf( 逻辑

【讨论】:

【参考方案2】:

android.content.ActivityNotFoundException: No Activity found to handle Intent

在盯着Implicit intents的activity之前,你需要检查设备是否有可以处理这个intent的组件(这通常是你的情况下的浏览器),否则你会得到这个异常。

为此,您可以使用intent.resolveActivity()

Intent linkEasy = new Intent(Intent.ACTION_VIEW, Uri.parse(String.valueOf(arrayListeasy)));

if(intent.resolveActivity(requireContext().getPackageManager()) != null)  
    startActivity(linkEasy);

【讨论】:

感谢您的回答,但我的设备中有浏览器,我认为问题出在此代码 Uri.parse(String.valueOf(arrayListeasy),因为当我将值更改为 url 链接“images.google.com/…”时,我可以打开链接,但我想要的是打开 arraylist 中包含的 url @Azer89 你能提供一个你试图传递的样本值吗Uri.parse() 是的,我已经更新了我的帖子,arraylist 包含 6 个字符串,并且 url 链接在第 6 个字符串 @Azer89 请检查答案.. 他更快:)

以上是关于如何从片段内的列表视图打开链接网址?的主要内容,如果未能解决你的问题,请参考以下文章

从活动更新视图页面中片段中的列表视图

如何通过邮件中的android深层链接打开片段?

Android:NullPointerException 无法将数据库加载到片段内的列表视图中

R:如何打开链接列表来抓取新闻网站的主页?

如何将列表视图中的数据从一个片段发送到另一个片段

我如何从一个片段到另一个片段的列表视图适配器进行事务