【问题标题】:Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView.setLayoutManager尝试调用虚拟方法 'void android.support.v7.widget.RecyclerView.setLayoutManager
【发布时间】:2018-08-10 16:47:34
【问题描述】:

我不知道为什么,但它出现了 java.lang.RuntimeException: Unable to start activity ComponentInfo{krispo.callie/krispo.callie.MainActivity}: java.lang.NullPointerException: Attempt to invoke空对象引用上的虚拟方法“void android.support.v7.widget.RecyclerView.setLayoutManager(android.support.v7.widget.RecyclerView$LayoutManager)”

错误。我尝试添加 LinearLayoutManager,因为我认为这是我阅读的另一篇文章的解决方案。谁能帮帮我谢谢

public class MainActivity extends AppCompatActivity {

    FloatingActionButton FAB;
    List<Contact> contactsList;
    private RecyclerView recyclerView;
    private ContactAdapter contactAdapter;
    private String TAG = "MainActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        contactsList = new ArrayList<>();
        recyclerView = (RecyclerView)findViewById(R.id.recycler_view);


        contactsList.add(new Contact("Bob","123456789","1", true));
        contactsList.add(new Contact("Jo","987654321","2",true));

        contactAdapter = new ContactAdapter(contactsList);
        final LinearLayoutManager layoutManager = new LinearLayoutManager(this.getApplicationContext());
        layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
        recyclerView.setLayoutManager(layoutManager);
        recyclerView.setAdapter(contactAdapter);


        FAB = (FloatingActionButton)findViewById(R.id.floatingActionButton);
        FAB.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent i = new Intent(MainActivity.this,NumberActivity.class);
                startActivity(i);
            }
        });



    }




}

【问题讨论】:

    标签: android-recyclerview


    【解决方案1】:

    最有可能的错误是您为您的 recyclerview 使用了错误的 ID,这与 activity_main.xml 中声明的 ID 不同

    在设置适配器之前设置LinearLayoutManager,并确保activity_main 中的recyclerview id 是recycler_view

    public class MainActivity extends AppCompatActivity {
    
    FloatingActionButton FAB;
    List<Contact> contactsList;
    private RecyclerView recyclerView;
    private ContactAdapter contactAdapter;
    private String TAG = "MainActivity";
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        contactsList = new ArrayList<>();
        recyclerView = (RecyclerView)findViewById(R.id.recycler_view);
        final LinearLayoutManager layoutManager = new LinearLayoutManager(MainActivity.this);
        recyclerView.setLayoutManager(layoutManager);
    
    
        contactsList.add(new Contact("Bob","123456789","1", true));
        contactsList.add(new Contact("Jo","987654321","2",true));
    
        contactAdapter = new ContactAdapter(contactsList);
        recyclerView.setAdapter(contactAdapter);
    
    
        FAB = (FloatingActionButton)findViewById(R.id.floatingActionButton);
        FAB.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent i = new Intent(MainActivity.this,NumberActivity.class);
                startActivity(i);
            }
        });
    
    
    
    }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-11
      • 1970-01-01
      • 2019-03-06
      • 2019-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多