片段发送数据和访问Fragment中的arraylist的活动

时间:2018-11-21 11:29:38

标签: java android android-fragments

我有一个fragment,它出现在底部导航活动中。 Fragments包含自定义recyclerview。当我按下它时,有一个评论按钮会打开另一个评论活动。下面是RecyclerView适配器中。

    viewholder.commentlay.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
                //commenttofragment.clear();
                Intent comment = new Intent(fp, com.fooddoof.fuddict.comment.class);
                int id = dusers.get(position).getId();
                int comcount = dusers.get(viewholder.getAdapterPosition()).getCommentcount();
                comment.putExtra("id",id);
                comment.putExtra("ownerid",userid);
                comment.putExtra("maincommentposition",position);
                comment.putExtra("commentcountonposition", comcount);
                fp.startActivityForResult(comment,1);

        }
    });

在完成某些任务后的“评论”活动中,我需要向此fragment发送一些值。因此,我重写了OnBackPressed方法。我已经在Fragment中创建了一个方法来接收它。

@Override
public void onBackPressed()
{
    Bundle args = new Bundle();
    args.putInt("maincommentcount",maincommentcount);
    args.putInt("maincommentposition", maincommentposition);
    FolowersPost f = new FolowersPost();
    f.getdatafromcomment(args);
    finish();
}

我在Fragment中收到的信息如下。

public void getdatafromcomment(Bundle args)
{
    int count = args.getInt("maincommentcount");
    int p=args.getInt("maincommentposition",999999999);
    Log.e("Shiva","count--->"+count+"p--->"+p);

}

已接收到值,但是我需要访问arraylist中传递的Fragement中的Adapter,以显示recyclerView。但是我回到fragment下的方法中的OnCreateView时无法访问它。我尝试使用OnResume来访问它,但是只工作了一段时间。我也已将Arraylist声明为全局变量。

1 个答案:

答案 0 :(得分:0)

您已经在使用startActivityForResult.,现在只需要使用onActivityResult.

但是您只需要从片段而不是从适配器开始活动。

onClick来自片段:

Intent comment = new Intent(getActivity(), com.fooddoof.fuddict.comment.class);
startActivityForResult(comment, 1);

onBackPressed在您的评论活动中:

    @Override
    public void onBackPressed() {
        Intent returnIntent = new Intent();
        returnIntent.putExtra("maincommentcount",10);
        returnIntent.putExtra("maincommentposition",20);
        setResult(Activity.RESULT_OK,returnIntent);
        finish();        
//        super.onBackPressed();
    }

onActivityResult的片段:

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == 1) {
            if (resultCode == Activity.RESULT_OK) {
                int mMaincommentcount = data.getIntExtra("maincommentcount", 0);
                int mMaincommentposition = data.getIntExtra("maincommentposition", 0);

                System.out.println("mMaincommentcount = " + mMaincommentcount + ", mMaincommentposition = " + mMaincommentposition);
            }
        }
    }