Android 将字符串变量从recyclerview传递到fragment

Android 将字符串变量从recyclerview传递到fragment,android,android-fragments,android-recyclerview,Android,Android Fragments,Android Recyclerview,我试图获取在recycler view n中存储在变量'name'中的电影的名称,但如何将其传递到dictionary fragment n,并将其设置为definitionn(edittext)。我尝试使用此代码,但它显示为空 我试图获取在recycler view n中存储在变量'name'中的电影的名称,但如何将其传递到dictionary fragment n,并将其设置为definitionn(edittext)。我尝试使用此代码,但它显示为空 import android.net.U

我试图获取在recycler view n中存储在变量'name'中的电影的名称,但如何将其传递到dictionary fragment n,并将其设置为definitionn(edittext)。我尝试使用此代码,但它显示为空 我试图获取在recycler view n中存储在变量'name'中的电影的名称,但如何将其传递到dictionary fragment n,并将其设置为definitionn(edittext)。我尝试使用此代码,但它显示为空

import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.RecyclerView;

import java.util.ArrayList;
import java.util.List;




// item of recyclerview was not visible until included  
app:layoutManager="android.support.v7.widget.LinearLayoutManager">

public class MainActivity extends AppCompatActivity   {

RecyclerView recyclerView;
RecyclerAdapter recyclerAdapter;

List<String> moviesList;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    moviesList = new ArrayList<>();

    recyclerView = findViewById(R.id.recyclerView);
    recyclerAdapter = new RecyclerAdapter(moviesList);


    recyclerView.setAdapter(recyclerAdapter);

    DividerItemDecoration dividerItemDecoration = new 
    DividerItemDecoration(this, DividerItemDecoration.VERTICAL);
    recyclerView.addItemDecoration(dividerItemDecoration);


    moviesList.add("IronMan");
    moviesList.add("The Incredible Hulk");
    moviesList.add("Iron Man 2");
    moviesList.add("Thor");
    moviesList.add("Captain America: The First Avenger");
    moviesList.add("The Avengers");
    moviesList.add("Iron Man 3");
    moviesList.add("Thor: The Dark World");
    moviesList.add("Captain America: The Winter Soldier");
    moviesList.add("Guardians of the Galaxy");
    moviesList.add("Avengers: Age of Ultron");
    moviesList.add("Ant-Man");
    moviesList.add("Captain America: Civil War");
    moviesList.add("Doctor Strange");
    moviesList.add("Guardians of the Galaxy Vol. 2");
    moviesList.add("Spider-Man: Homecoming");
    moviesList.add("Thor: Ragnarok");
    moviesList.add("Black Panther");
    moviesList.add("Avengers: Infinity War");
    moviesList.add("Ant-Man and the Wasp");
    moviesList.add("Captain Marvel");
    moviesList.add("Avengers: Endgame");
    moviesList.add("Spider-Man: Far From Home");
    }


}



import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import java.util.List;

public class RecyclerAdapter extends 
RecyclerView.Adapter<RecyclerAdapter.ViewHolder>  {

String name="";

private static final String TAG = "RecyclerAdapter";
List<String> moviesList;

public RecyclerAdapter(List<String> moviesList) {
    this.moviesList = moviesList;
}

@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int 
viewType) {
    LayoutInflater layoutInflater = 
LayoutInflater.from(parent.getContext());
    View view = layoutInflater.inflate(R.layout.row_item, parent, 
false);
    ViewHolder viewHolder = new ViewHolder(view);


    return viewHolder;
}

@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int 
position) {
    holder.rowCountTextView.setText(String.valueOf(position));
    holder.textView.setText(moviesList.get(position));
}

@Override
public int getItemCount() {
    return moviesList.size();
}

class ViewHolder extends RecyclerView.ViewHolder implements 
View.OnClickListener {

    ImageView imageView;
    TextView textView, rowCountTextView;

    public ViewHolder(@NonNull View itemView) {
        super(itemView);

        imageView = itemView.findViewById(R.id.imageView);
        textView = itemView.findViewById(R.id.textView);
        rowCountTextView = 
itemView.findViewById(R.id.rowCountTextView);

        itemView.setOnClickListener(this);

        itemView.setOnLongClickListener(new 
View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View view) {
                moviesList.remove(getAdapterPosition());
                notifyItemRemoved(getAdapterPosition());
                return true;
            }
        });

    }

        @Override
        public void onClick(View view) {
        name=moviesList.get(getAdapterPosition()).toString();
        AppCompatActivity activity=(AppCompatActivity) 
        view.getContext();
        Fragment myfragment = new Dictionary();

activity.getSupportFragmentManager().beginTransaction().
replace(R.id.activitymain,myfragment).addToBackStack(null).commit();




       }
    }
}



import android.os.Bundle;
import android.support.v4.app.Fragment;
 import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;



public class Dictionary extends Fragment {




public EditText definitionnn;

public Dictionary() {

}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.fragment_dictionary, container, false);
    definitionnn = (EditText) v.findViewById(R.id.definition);
    RecyclerAdapter recycle = new RecyclerAdapter(null);
    String word = recycle.name;



    return v;


}



@Override
public void onStart() {
    super.onStart();
    RecyclerAdapter recycle = new RecyclerAdapter(null);
    String word = recycle.name;
    definitionnn.setText(word);
}


}
导入android.net.Uri;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.support.v7.widget.DividerItemDecoration;
导入android.support.v7.widget.RecyclerView;
导入java.util.ArrayList;
导入java.util.List;
//recyclerview项在包含之前不可见
app:layoutManager=“android.support.v7.widget.LinearLayoutManager”>
公共类MainActivity扩展了AppCompatActivity{
回收视图回收视图;
回收器适配器回收器适配器;
列表电影列表;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
moviesList=newarraylist();
recyclerView=findViewById(R.id.recyclerView);
recyclerAdapter=新的recyclerAdapter(电影列表);
recyclerView.setAdapter(recyclerAdapter);
DividerItemDecoration DividerItemDecoration=新建
DividerItemDecoration(这个,DividerItemDecoration.VERTICAL);
回收视图。附加装饰(分割装饰);
添加(“铁人”);
添加(“不可思议的绿巨人”);
电影列表。添加(“钢铁侠2”);
电影列表。添加(“雷神”);
添加(“美国队长:第一复仇者”);
添加(“复仇者”);
电影列表。添加(“钢铁侠3”);
添加(“雷神:黑暗世界”);
添加(“美国上尉:冬季士兵”);
添加(“银河守护者”);
添加(“复仇者:奥创时代”);
电影列表。添加(“蚂蚁人”);
添加(“美国队长:内战”);
添加(“奇怪医生”);
电影列表。添加(“银河守护者第二卷”);
添加(“蜘蛛侠:回家”);
添加(“雷神:拉格纳洛克”);
添加(“黑豹”);
添加(“复仇者:无限战争”);
添加(“蚂蚁和黄蜂”);
电影列表。添加(“惊奇漫画船长”);
添加(“复仇者:结局”);
添加(“蜘蛛侠:远离家乡”);
}
}
导入android.support.annotation.NonNull;
导入android.support.v4.app.Fragment;
导入android.support.v4.app.FragmentTransaction;
导入android.support.v7.app.AppActivity;
导入android.support.v7.widget.RecyclerView;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ImageView;
导入android.widget.TextView;
导入android.widget.Toast;
导入java.util.List;
公共类回收适配器扩展
RecyclerView.适配器{
字符串名称=”;
私有静态最终字符串TAG=“RecyclerAdapter”;
列表电影列表;
公共回收适配器(列表电影列表){
this.moviesList=moviesList;
}
@非空
@凌驾
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent,int
视图类型){
LayoutInflater LayoutInflater=
LayoutInflater.from(parent.getContext());
视图=布局更平坦。充气(R.layout.row_项目,父项,
假);
ViewHolder ViewHolder=新的ViewHolder(视图);
返回视图持有者;
}
@凌驾
public void onBindViewHolder(@NonNull ViewHolder,int
(职位){
holder.rowCountTextView.setText(String.valueOf(position));
holder.textView.setText(moviesList.get(position));
}
@凌驾
public int getItemCount(){
返回moviesList.size();
}
类ViewHolder扩展了RecyclerView.ViewHolder实现
View.OnClickListener{
图像视图图像视图;
TextView TextView,rowCountTextView;
公共视图持有者(@NonNull View itemView){
超级(项目视图);
imageView=itemView.findViewById(R.id.imageView);
textView=itemView.findViewById(R.id.textView);
rowCountTextView=
findViewById(R.id.rowCountTextView);
setOnClickListener(这个);
itemView.setOnLongClickListener(新建
View.OnLongClickListener(){
@凌驾
仅长按公共布尔值(视图){
moviesList.remove(getAdapterPosition());
notifyItemRemoved(getAdapterPosition());
返回true;
}
});
}
@凌驾
公共void onClick(视图){
name=moviesList.get(getAdapterPosition()).toString();
AppCompatActivity活动=(AppCompatActivity)
view.getContext();
Fragment myfragment=新字典();
activity.getSupportFragmentManager().beginTransaction()。
replace(R.id.activitymain,myfragment).addToBackStack(null.commit();
}
}
}
导入android.os.Bundle;
导入android.support.v4.app.Fragment;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.EditText;
公共类字典扩展了片段{
公共编辑文本定义nn;
公共词典(){
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图v=充气机。充气(R.layout.fragment\u字典,容器,假);
定义nn=(编辑文本)v.findviewbyd(R.id.definition);
RecyclerAdapter recycle=新的RecyclerAdapter(空);
字符串字=recycle.name;
返回v;
}
@凌驾
public void onStart(){
super.onStart();
RecyclerAdapter recycle=新的RecyclerAdapter(空);
字符串字=recycle.name;
定义n.setText(单词);
}
}

问题在于,在OnClick()方法中,您创建并添加了新的字典片段,而没有传递所需的值。像这样的东西就是你的解决方案

在你的回收站
Bundle bundle = new Bundle();
bundle.putString(yourVariable, "word");
Fragment fragment = new Dictionary();
fragobj.setArguments(bundle);
activity.getSupportFragmentManager().beginTransaction().
replace(R.id.activitymain,fragment).addToBackStack(null).commit();
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.fragment_dictionary, container, false);
    String word = getArguments().getString("word"); 
    definitionnn = (EditText) v.findViewById(R.id.definition)
    definitionnn.setText(word);
    return v;
}