滑翔在RecyclerViewAdapter导致崩溃的应用程序时,我试试,看片段到活动

问题描述 投票:0回答:1

我有一个FragmentActivity其中有我从RecyclerView显示的数据。当我在一个按钮,点击它会送我去活动。在Adapter我想尝试Glide采取的图标,但问题是,它Glide崩溃的应用程序。如果我手动添加与setImageResource它没有崩溃的应用程序图标一个,但我想与Glide增加,因为图标从url依赖。

这是代码。

Adapter.class

    public class ReadingListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private Context mContext;
ArrayList<ReadingList> arrayList;
ReadingListDB readingListDB;
String BASE_URL = "https://www.google.com/s2/favicons?domain=";


public ReadingListAdapter(Context mContext, ArrayList<ReadingList> arrayList) {
    this.mContext = mContext;
    this.arrayList = arrayList;

}

@NonNull
@Override
public ReadingListAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.reading_item, viewGroup, false);
    return new ViewHolder(view);
}


@Override
public void onBindViewHolder(@NonNull final RecyclerView.ViewHolder holder, final int i) {
    final ViewHolder viewHolder = (ViewHolder) holder;
    readingListDB = new ReadingListDB(mContext);

    viewHolder.readingListTitle.setText(arrayList.get(i).getPageTitle());
    viewHolder.readingListUrl.setText(arrayList.get(i).getUrl());
    String imageURL = BASE_URL + arrayList.get(i).getUrl();
    viewHolder.imgFavIcon.setImageResource(R.drawable.default_favicon); //Here is the set manually


    Glide.with(mContext)
            .load(imageURL)
            .into(viewHolder.imgFavIcon);

Activity.class

public class ActivityBookmarksFavorites extends AppCompatActivity implements View.OnClickListener {
    private static final String TAG = "ActivityBookmark";
    Button btnChangeBookmark, speedDial, readingList;
    LinearLayout addBookmarkLayout;
    ImageView addBookmark;
    BookmarkDB bookmarkDB;
    String data = null;
    Button btnClose;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_bookmarks);
        speedDial = findViewById(R.id.btnFavSites);
        readingList = findViewById(R.id.btnFavPages);

        bookmarkDB = new BookmarkDB(this);
        Intent receivedIntent = getIntent();
        String test = receivedIntent.getStringExtra("SpeedDial");
        SpeedDialFragment newFragment = new SpeedDialFragment();
        ReadingListFragment newFragment2 = new ReadingListFragment();
        if ("SpeedDial".equals(test)) {
            getSupportFragmentManager().beginTransaction().add(R.id.frameLayoutWithFragment, newFragment).commit();
            speedDial.setSelected(true);
            speedDial.setClickable(true);
        } else {
            getSupportFragmentManager().beginTransaction().add(R.id.frameLayoutWithFragment, newFragment2).commit();
            readingList.setSelected(true);
            readingList.setClickable(true);
        }

Fragment.class

public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        paramView = inflater.inflate(R.layout.fragment_reading_list, container, false);
        linLayoutEmptyLis = paramView.findViewById(R.id.linLayoutEmptyListReading);
        mRecyclerView = paramView.findViewById(R.id.lvReading);
        readingListAdapter = new ReadingListAdapter(mContext, arrayList);
        readingListDB = new ReadingListDB(getActivity());
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(mContext);
        mRecyclerView.setLayoutManager(linearLayoutManager);
        mRecyclerView.setHasFixedSize(true);
        ReadingList readingList = new ReadingList();
        DividerItemDecoration mDividerItemDecoration = new DividerItemDecoration(mRecyclerView.getContext(),
                linearLayoutManager.getOrientation());
        mRecyclerView.addItemDecoration(mDividerItemDecoration);
        new ItemTouchHelper(itemTouchHelperCallback).attachToRecyclerView(mRecyclerView);
        final Cursor data = readingListDB.getData();

按钮,点击并发送至活动。 MainActivity.class

 bookmark.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, ActivityBookmarksFavorites.class);
                startActivity(intent);
            }
        });

从滑翔错误

You cannot start a load on a not yet attached View or a Fragment where getActivity() returns null (which usually occurs when getActivity() is called before the Fragment is attached or after the Fragment is destroyed)

android android-fragments android-glide
1个回答
1
投票

您正在使用onCreateView的第四您Fragment.class线的未初始化变量(mContext)。之前只是初始化它,还是叫getActivity()提供一个有效的上下文。

© www.soinside.com 2019 - 2024. All rights reserved.