2017-07-25 171 views
0

我的應用程序使用AsyncTask從WebAPI獲取數據並將其顯示在Recycler視圖中。打開鏈接點擊CardView

我打算做的是在電話上安裝的瀏覽器中點擊卡片視圖時打開相應的鏈接。

我試過所有提到的解決方案,但我的應用程序似乎總是崩潰。

如果我使用sendBroadcast,它不會執行任何操作。

我的代碼爲回收站查看適配器:

@Override 
public void onBindViewHolder(ViewHolder holder, int position) { 
    final News news = listnews.get(position); 

    holder.tvTitle.setText(news.getTitle()); 
    holder.tvDesc.setText(news.getDescription()); 

    Picasso.with(getContext()).load(news.getUrlToImage()).into(holder.ivNews); 
    holder.newsLayout.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(news.getUrl())); 
      context.startActivity(intent); 
     } 
    }); 
} 

應用程序工作正常,並加載所有的新聞條目,但是當我點擊一個新聞條目它與停止響應消息崩潰。

+0

後錯誤日誌和RecyclerView適配器的完整代碼 –

回答

1

你應該加入這一行intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

象下面這樣: -

@Override 
    public void onClick(View view) { 
     Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(news.getUrl())); 
     intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     context.startActivity(intent); 
    } 
+0

哇,它的工作,謝謝。 你能解釋一下這行代碼的用途嗎? –

+0

僅當 相應的任務現在不在內存中時,它纔會開始一個新的活動,並且匹配意圖過濾器。有關更多詳細信息,請單擊[此處](https://developer.android.com/reference/android/content/Intent.html#addFlags(int)) –

+0

謝謝,它解決了所有問題。 –