我正在android studio中编程,这是我的代码段:
public class settingsView extends Fragment {
public settingsView() {
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
final Spinner citySpinner = (Spinner) getActivity().findViewById(R.id.citySpinner);
FirebaseDatabase.getInstance().getReference("/movies/karnataka").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
ArrayList<String> cityList = new ArrayList<>();
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
cityList.add(snapshot.getKey());
}
Log.d("firebasedata", cityList.toString());
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity().getApplicationContext(), android.R.layout.simple_spinner_item, cityList );
adapter.setDropDownViewResource(android.R.layout.simple_spinner_item);
citySpinner.setAdapter(adapter);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
return inflater.inflate(R.layout.settingsview, container, false);
}
}
我得到
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Spinner.setAdapter(android.widget.SpinnerAdapter) on a null object reference exception
在线:
citySpinner.setAdapter(adapter)
答案 0 :(得分:3)
您需要首先在oncreateview中为具有片段视图的xml文件充气。
然后使用该视图执行findviewbyid:
view = inflater.inflate(R.layout.fragment_xml, container, false);
final Spinner citySpinner = (Spinner) view.findViewById(R.id.citySpinner);
答案 1 :(得分:2)
您需要在视图中找到微调器。 在onCreateView方法中尝试以下方法:
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.settingsview, container, false);
final Spinner citySpinner = (Spinner) v.findViewById(R.id.citySpinner); // you use it here
return v;
}