gpt4 book ai didi

java - 为什么我的 ListView 上的 setAdapter() 可能会产生 NullPointerException?

转载 作者:行者123 更新时间:2023-12-02 12:10:50 24 4
gpt4 key购买 nike

我对这种情况很困惑。下面的代码工作正常,但 Android Studio 提醒我 setAdapter() 可能会产生“java.lang.NullPointerException”:

public class PlayerManagement extends AppCompatActivity {
private Cursor c;
private SQLiteDatabase db;
private String selectedPlayerId, selectedPlayerName;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_player_management);
ListView listView = (ListView) findViewById(android.R.id.list);

try {
MTGPS_DBHelper dbHelper = new MTGPS_DBHelper(this);
db = dbHelper.getWritableDatabase();
new getPlayersCursorAsync().execute();

final SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(PlayerManagement.this, android.R.layout.simple_list_item_1, c,
new String[]{MTGPS_DB_Contract.Player.COLUMN_NAME_PLAYER_NAME},
new int[]{android.R.id.text1}, 0);
listView.setAdapter(mAdapter);

...

这是 XML 文件 Activity_player_management:

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:gravity="center"
android:layout_height="match_parent">

<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent" />

<TextView
android:id="@android:id/empty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/no_players_found"
android:textSize="25sp" />

</LinearLayout>

正如我所说,一切正常,但我不明白为什么 Android Studio 会提醒我。如果我将 ListView 声明为类字段,那么“问题”就会消失。只有当我在 onCreate 方法中声明 Listview 时,我才会收到警报。

最佳答案

setAdapter() may produce 'java.lang.NullPointerException

这只是一个警告。 findViewById() 返回 @Nullable 即可能为 null 并且您正在对返回值调用方法而无需进行空值检查。

您可以抑制警告,例如通过添加

//noinspection ConstantConditions

在上一行。

If I declare the ListView as a class field, then the "problem" disappears. Only when I declare the Listview inside the onCreate method is when I get the alert.

无效分析器无法查看字段的写入位置,并且不会生成警告。局部变量的分析更容易。

关于java - 为什么我的 ListView 上的 setAdapter() 可能会产生 NullPointerException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46561540/

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