Я хочу получить идентификатор счетчика, который присутствует в Custom_layout. xml, и я использую findviewbyid во фрагменте, я пробовал view.findviewbyId и getActivity (). FindviewbyId, но ничего не работает. Скажите, пожалуйста, как мне получить идентификатор из макета. xml файл во фрагменте.
CustomLayout. xml
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:orientation="vertical"
android:padding="@dimen/_20sdp"
android:layout_height="match_parent">
<Spinner
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/spinner"/>
Фрагмент. java код :
final Spinner spinner = view.findViewById(R.id.spinner);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { //this line is giving erro
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
text = spinner.getSelectedItem().toString();
if(text.equals("India")){
TypedArray indianewslogo = getResources().obtainTypedArray(R.array.indianews);
String[] indianewsname = getResources().getStringArray(R.array.indianewsnames);
newsModels = new ArrayList<>();
for(int i =0; i<indianewslogo.length(); i++) {
NewsModel newsModel = new NewsModel(indianewslogo.getResourceId(i,0),indianewsname[i]);
newsModels.add(newsModel);
}
GridLayoutManager gridLayoutManager =new GridLayoutManager(getContext(), 4);
homeBinding.recylerview.setLayoutManager(gridLayoutManager);
homeBinding.recylerview.setItemAnimator(new DefaultItemAnimator());
RecyclerAdapter adapter = new RecyclerAdapter(newsModels, getContext());
homeBinding.recylerview.setAdapter(new AlphaInAnimationAdapter(adapter));
}
else{
TypedArray newslogo = getResources().obtainTypedArray(R.array.allcountriesnews);
String[] newshref =getResources().getStringArray(R.array.allcountryhref);
String[] newstext = getResources().getStringArray(R.array.allcountriesnewsnames);
newsModels = new ArrayList<>();
for(int i =0; i<newslogo.length(); i++) {
NewsModel newsModel = new NewsModel(newslogo.getResourceId(i,0),newstext[i]);
newsModels.add(newsModel);
}
GridLayoutManager gridLayoutManager =new GridLayoutManager(getContext(), 4);
homeBinding.recylerview.setLayoutManager(gridLayoutManager);
homeBinding.recylerview.setItemAnimator(new DefaultItemAnimator());
RecyclerAdapter adapter = new RecyclerAdapter(newsModels, getContext());
homeBinding.recylerview.setAdapter(new AlphaInAnimationAdapter(adapter));
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
LogcatError:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.newsapp/com.example.newsapp.HomeActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Spinner.setOnItemSelectedListener(android.widget.AdapterView$OnItemSelectedListener)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2988)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3066)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1764)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:202)
at android.app.ActivityThread.main(ActivityThread.java:6962)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:528)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:888)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Spinner.setOnItemSelectedListener(android.widget.AdapterView$OnItemSelectedListener)' on a null object reference
at com.example.newsapp.HomeFragment.onCreateView(HomeFragment.java:67)
at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2600)
at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:881)
at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManagerImpl.java:1238)