我不知道为什么,但它出现了 java.lang.RuntimeException: Unable to start activity ComponentInfo{krispo.callie/krispo.callie.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method '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);
}
});
}
}
最佳答案
最有可能的错误是你为你的 recyclerview 使用了错误的 id,这与 activity_main.xml
中声明的不同
在设置适配器之前设置 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);
}
});
}
}
关于android-recyclerview - 尝试调用虚拟方法 'void android.support.v7.widget.RecyclerView.setLayoutManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51781024/