>source

나는 안드로이드 스튜디오를 처음 접했고 Fragment에서 RecyclerView를 만들려고했습니다. 튜토리얼을 따르고 있었지만 여전히 'Cannot resolve'findViewById '메시지가 나타납니다.

나는 시도했다 :

RecyclerView recyclerView = (RecyclerView)getView().findViewById(R.id.recyclerView);

그러나 결국 오류가 발생했습니다.

Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference

다음은 코드입니다.

package com.example.app;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class Articles extends Fragment {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        NewsList[] myListData = new NewsList[] {
                new NewsList("Article 1", "Some Author"),
                new NewsList("Article2", "Some Author"),
                new NewsList("Article3", "Some Author"),
        };
        RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
        NewsAdapter adapter = new NewsAdapter(myListData);
        recyclerView.setHasFixedSize(true);
        recyclerView.setAdapter(adapter);
    }
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_create, container, false);
    }
}

이 문제를 어떻게 해결할 수 있습니까?


  • 답변 # 1

    다음 변수를 추가하십시오.

    View root;
    RecyclerView recyclerView;
    
    

    onCreateView를 다음과 같이 변경하십시오.

    public View onCreateView(@NonNull LayoutInflater inflater,
                             ViewGroup container, Bundle savedInstanceState) {
        root = inflater.inflate(R.layout.fragment_profile, container, false);
        recyclerView = root.findViewById(R.id.recyclerView);
        return root;
    }
    
    

    마지막으로-XML 파일 내의 recyclerview에 다음이 있는지 확인하십시오.

    android:id="@+id/recyclerView"
    
    

  • 답변 # 2

    귀하의 견해는 아직 부풀려지지 않았기 때문에 찾을 수 없습니다. 코드 이동 onCreate ...에 onViewCreated 조각 수명주기.

       @Override
        public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
            super.onViewCreated(view, savedInstanceState);
            // your view is discoverable here
            RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.recyclerView);
        }
    
    
    

관련 자료

  • 이전 visual studio - 씨# - 전체 프로젝트를 통해 접근 가능한 변수 생성
  • 다음 Creating Mysql database with python - python으로 mysql 데이터베이스 만들기 - 1064 오류가 계속 발생합니다 (… '% s'근처에서 사용할 올바른 구문)