【问题标题】:Is there any way we can replace data of single fragment without replacing fragment?有什么方法可以在不替换片段的情况下替换单个片段的数据?
【发布时间】:2019-12-07 11:59:31
【问题描述】:
public void onBindViewHolder(@NonNull final myViewHolder holder, final int position) {

    holder.tvItem.setText(itemList.get(position).getmTitle());
    Picasso.get().load(itemList.get(position).geturl()).into(holder.imgFlag);
    final ModelClass model= itemList.get(position);
    holder.cardView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            DataFragment dataFragment= new DataFragment();
            ((AppCompatActivity)mContext).getSupportFragmentManager()
                    .beginTransaction()
                    .replace(R.id.fragment,dataFragment)
                    .commit();
                    Bundle bundle= new Bundle();
                    bundle.putSerializable("model", model);
                    dataFragment.setArguments(bundle);
                }
            });
    }
}

【问题讨论】:

  • 发布您的代码,我们将为您提供帮助
  • 我使用了一个片段,它在点击 recyclerview 时显示数据。我想问如果我们想在点击recyclerview时更新数据但片段没有被替换怎么办?有没有我们使用的方法或接口?
  • 我已添加代码请检查
  • recyclerview item点击右键时是否更新数据?
  • 是的,我想更新

标签: android android-studio android-fragments fragment android-fragmentactivity


【解决方案1】:

您可以在片段上创建一个用于更新它的方法,如果片段已经存在,则使用该方法。

例子:

public void onBindViewHolder(@NonNull final myViewHolder holder, final int position) {

    holder.tvItem.setText(itemList.get(position).getmTitle());
    Picasso.get().load(itemList.get(position).geturl()).into(holder.imgFlag);
    final ModelClass model= itemList.get(position);
    holder.cardView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Activity activity = ((AppCompatActivity)mContext);
            Fragment fragment = activity.getSupportFragmentManager().findFragmentById(R.id.fragment);
            // Check if the fragment already exists, if so, just update it
            if (fragment != null) {
                DataFragment dataFragment = (DataFragment) fragment;
                dataFragment.replaceData(model);
            }
            else { // Create new instance
                DataFragment dataFragment= new DataFragment();
                activity.getSupportFragmentManager()
                        .beginTransaction()
                        .replace(R.id.fragment,dataFragment)
                        .commit();
                Bundle bundle = new Bundle();
                bundle.putSerializable("model", model);
                dataFragment.setArguments(bundle);
            }
        });
    }
}

希望有帮助!

【讨论】:

    猜你喜欢
    • 2012-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多