Как получить идентификатор из фрагмента, используя findviewbyid, который присутствует в файле custom_layout. xml - PullRequest
0 голосов
/ 28 марта 2020

Я хочу получить идентификатор счетчика, который присутствует в 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)
...