gpt4 book ai didi

java - 出现错误 java.lang.NullPointerException : Attempt to invoke interface method 'int java.util.List.size()' on a null object reference

转载 作者:行者123 更新时间:2023-12-01 18:52:56 26 4
gpt4 key购买 nike

我收到错误: java.lang.NullPointerException: 尝试在空对象引用上调用接口(interface)方法 'int java.util.List.size()' 。我试图找出确切的问题,但无法确定确切的位置。希望有人可以提供帮助。我有 2 个单独的布局,带有 2 个单独的适配器和 ListView 。已经为此苦苦挣扎了一段时间,希望有一个解决方案。非常感谢!

    public class viewContacts extends AppCompatActivity {

private static final String TAG = viewContacts.class.getSimpleName();
ListView listView_Android_Contacts;
ListView viewContacts;
View currentSelected;
Cursor c;
String contactName;
CardView saveContacts;
String phoneNumber;
CheckBox cb;
String currentContactName;
ArrayList<String> selectedContacts;
ArrayList<String> contacts;
ArrayList<String> listMessages;
LinearLayout linearMain;
ListView currentContactsList;
String contactEntry;
public List<String> savedContacts;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_contacts_list);
final ListView currentContactsList = findViewById(R.id.currentContactsList);
setContentView(R.layout.activity_view_contacts);
saveContacts = findViewById(R.id.saveContacts);
final ListView viewContacts = findViewById(R.id.contactsView);
Dexter.withActivity(this)
.withPermission(Manifest.permission.READ_CONTACTS)
.withListener(new PermissionListener() {
@Override
public void onPermissionGranted(PermissionGrantedResponse response) {
get();
}


@Override
public void onPermissionDenied(PermissionDeniedResponse response) {
// check for permanent denial of permission
if (response.isPermanentlyDenied()) {
// navigate user to app settings
}
}


@Override
public void onPermissionRationaleShouldBeShown(PermissionRequest permission, PermissionToken token) {
token.continuePermissionRequest();
}
}).check();
final ArrayAdapter<String> adapter = new ArrayAdapter<String>(
this, android.R.layout.simple_list_item_multiple_choice, contacts
);
final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_2, selectedContacts);
viewContacts.setAdapter(adapter);
currentContactsList.setAdapter(arrayAdapter);
viewContacts.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String selectedFromList = (String) viewContacts.getItemAtPosition(position);
Toast.makeText(viewContacts.this, selectedFromList,Toast.LENGTH_SHORT).show();
}
});
saveContacts.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
selectedContacts = new ArrayList<>();
List<Integer> checkedIDs = new ArrayList<Integer>();
final SparseBooleanArray checkedItems = viewContacts.getCheckedItemPositions();
for (int i = 0; i < checkedItems.size(); i++){
final boolean isChecked = checkedItems.valueAt(i);
if (isChecked){
final int position = checkedItems.keyAt(i);
String s = (String) viewContacts.getItemAtPosition(position);
selectedContacts.add(s);
checkedIDs.add(position);
}

}
startActivity(new Intent(viewContacts.this, contactsList.class));
}
});
}

public void get(){

c = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, ContactsContract.Contacts.DISPLAY_NAME );
contacts = new ArrayList<>();
while(c.moveToNext()){
contactName = c.getString(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
phoneNumber = c.getString(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
contacts.add( contactName + "\n" + phoneNumber);

Log.d(TAG, "show contacts:");
}
c.close();
}
}

最佳答案

代码中唯一调用 size() 的地方是这里:

        for (int i = 0; i < checkedItems.size(); i++){

假设这就是引发异常的地方,checkedItems 必须为 null

因此 viewContacts.getCheckedItemPositions() 必须返回 null

这就是我们根据您提供的信息所能提供的信息。

剩下的诊断工作就交给你了。

<小时/>

更新

看来您正在使用不同的 View 调用 setContentView 两次。那是行不通的。 Activity 只有一个内容 View 。

这可能解释了 NPE。两个 View 之一不会(不能)连接到 Activity 中,这可能就是它返回 null 的原因。

您需要创建一个包含/组合两个布局的布局。或者也许在两种布局之间切换。 (不确定...)

关于java - 出现错误 java.lang.NullPointerException : Attempt to invoke interface method 'int java.util.List.size()' on a null object reference,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59701742/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com