Java 从列表中选择项目时,该项目不会显示在textview(EditorFragment)中
EditorFragment,textview:onclick,dialogfragment将打开, dialogfragment,两部分:a)搜索字段b)回收视图。 适配器,它处理列表中的项选择 EditorFragment代码:在EditorFragment中,选中项目后,该项目将显示在textview中Java 从列表中选择项目时,该项目不会显示在textview(EditorFragment)中,java,android,Java,Android,EditorFragment,textview:onclick,dialogfragment将打开, dialogfragment,两部分:a)搜索字段b)回收视图。 适配器,它处理列表中的项选择 EditorFragment代码:在EditorFragment中,选中项目后,该项目将显示在textview中 public class EditorFragment extends Fragment { public static TextView tv_custom_spinn
public class EditorFragment extends Fragment {
public static TextView tv_custom_spinner;
private Context context;
SearchAdapter searchAdapter = null;
List<SearchModel> searchModelList ;
public EditorFragment(Context context) {
this.context = context;
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_blank, container, false);
searchModelList = new ArrayList<>();
searchModelList.add(new SearchModel("First Name"));
searchModelList.add(new SearchModel("Second Name"));
searchModelList.add(new SearchModel("Third Name"));
searchModelList.add(new SearchModel("Fourth Name"));
searchModelList.add(new SearchModel("Fifth Name"));
searchModelList.add(new SearchModel("Sixth Name"));
searchAdapter = new SearchAdapter(context,searchModelList);
setResources(view);
clickSpinner();
return view;
}
private void setResources(View view){
tv_custom_spinner = view.findViewById(R.id.tv_custom_spinner);
}
private void clickSpinner(){
tv_custom_spinner.setOnClickListener(v->{
FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
SpinnerDialogfragment spinnerDialogFragment= new SpinnerDialogfragment(context, searchModelList);
spinnerDialogFragment.show(fragmentManager, "SPINNER");
});
searchAdapter.setUpdateDataListener(value -> tv_custom_spinner.setText(value));
}
}
进程25724已终止。在
onViewCreated
方法中初始化此DataListener
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_blank, container, false);
searchModelList = new ArrayList<>();
searchModelList.add(new SearchModel("First Name"));
searchModelList.add(new SearchModel("Second Name"));
searchModelList.add(new SearchModel("Third Name"));
searchModelList.add(new SearchModel("Fourth Name"));
searchModelList.add(new SearchModel("Fifth Name"));
searchModelList.add(new SearchModel("Sixth Name"));
searchAdapter = new SearchAdapter(context,searchModelList);
//Initialise DataListener here
searchAdapter.setUpdateDataListener(new UpdateDataListener() {
@Override
public void onItemSelected(String value) {
tv_custom_spinner.setText(value);
}
});
setResources(view);
clickSpinner();
return view;
}
@覆盖
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
//为该碎片膨胀布局
视图=充气机。充气(R.layout.fragment\u blank,container,false);
searchModelList=新的ArrayList();
添加(新的SearchModel(“名字”));
添加(新的SearchModel(“第二个名称”);
添加(新的SearchModel(“第三个名称”);
添加(新的SearchModel(“第四个名称”);
添加(新的SearchModel(“第五个名称”);
添加(新的SearchModel(“第六个名称”);
searchAdapter=新的searchAdapter(上下文,searchModelList);
//在此处初始化DataListener
setUpdateDataListener(新的UpdateDataListener(){
@凌驾
已选择公共值(字符串值){
tv_custom_spinner.setText(值);
}
});
设置资源(视图);
单击微调器();
返回视图;
}
在片段onviewcreated()调用中
然后再试一次。空期望值应该消失并且应该可以工作如果您的侦听器为空,请尝试在activity/fragmentUpdated中设置/更新,您永远不会创建UpdateDataStenerSearchAdapter.setUpdateDataListener(新的SearchAdapter.UpdateDataListener(){@Override public void onItemSelected(字符串值){tv_custom_spinner.setText(value);}}});当使用lambda时,此时无需创建updateDataListener(),是否需要推送“SpinnerDialogfragment.java”的代码??
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.coco.myapplication, PID: 25724
java.lang.NullPointerException: Attempt to invoke interface method 'void com.coco.myapplication.SearchAdapter$UpdateDataListner.onItemSelected(java.lang.String)' on a null object reference
at com.coco.myapplication.SearchAdapter.lambda$onBindViewHolder$0$SearchAdapter(SearchAdapter.java:53)
at com.coco.myapplication.-$$Lambda$SearchAdapter$fc2DFbNCnzN7ljubXWaQ4mEoai8.onClick(Unknown Source:4)
at android.view.View.performClick(View.java:6608)
at android.view.View.performClickInternal(View.java:6585)
at android.view.View.access$3100(View.java:782)
at android.view.View$PerformClick.run(View.java:25945)
at android.os.Handler.handleCallback(Handler.java:874)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:198)
at android.app.ActivityThread.main(ActivityThread.java:6729)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_blank, container, false);
searchModelList = new ArrayList<>();
searchModelList.add(new SearchModel("First Name"));
searchModelList.add(new SearchModel("Second Name"));
searchModelList.add(new SearchModel("Third Name"));
searchModelList.add(new SearchModel("Fourth Name"));
searchModelList.add(new SearchModel("Fifth Name"));
searchModelList.add(new SearchModel("Sixth Name"));
searchAdapter = new SearchAdapter(context,searchModelList);
//Initialise DataListener here
searchAdapter.setUpdateDataListener(new UpdateDataListener() {
@Override
public void onItemSelected(String value) {
tv_custom_spinner.setText(value);
}
});
setResources(view);
clickSpinner();
return view;
}
setUpdateDataListener("pass your listner")