java - 为 dialogView 膨胀视图时出现 NullPointerException
问题描述
在创建对话框视图的过程中,我收到此错误:
FATAL EXCEPTION: main
Process: com.example.myapp, PID: 26135
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:734)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:825)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:828)
at android.view.LayoutInflater.inflate(LayoutInflater.java:523)
at android.view.LayoutInflater.inflate(LayoutInflater.java:425)
at android.view.LayoutInflater.inflate(LayoutInflater.java:368)
at com.example.myapp.NewGameActivity.createTeam(NewGameActivity.java:145)
at com.example.myapp.NewGameActivity.onItemSelected(NewGameActivity.java:394)
at android.widget.AdapterView.fireOnSelected(AdapterView.java:917)
at android.widget.AdapterView.dispatchOnItemSelected(AdapterView.java:906)
at android.widget.AdapterView.access$300(AdapterView.java:51)
at android.widget.AdapterView$SelectionNotifier.run(AdapterView.java:876)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5593)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
这是我的导致异常的代码:
final View dialogView = inflater.inflate(R.layout.dialog_layout_add_team, rootView);
更多上下文代码:
//Dialog
// 1. Instantiate an AlertDialog.Builder with its constructor
AlertDialog.Builder builder = new AlertDialog.Builder(NewGameActivity.this);
LayoutInflater inflater = getLayoutInflater();
ViewGroup rootView = findViewById(R.id.root_new_game);
final View dialogView = inflater.inflate(R.layout.dialog_layout_add_team, rootView);
// 2. Chain together various setter methods to set the dialog characteristics
builder
.setTitle(R.string.new_team)
.setView(dialogView)
.setPositiveButton(R.string.done, null)
.setCancelable(false)
.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
// User cancelled the dialog
}
});
// 3. Get the AlertDialog from create()
final AlertDialog dialog = builder.create();
dialog.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface dialogInterface) {
Button button = ((AlertDialog) dialog).getButton(AlertDialog.BUTTON_POSITIVE);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// User clicked OK button
//Dismiss once everything is OK.
dialog.dismiss();
}
}
});
}
});
dialog.show();
我也尝试使用 null (导致同样的错误):
final View dialogView = inflater.inflate(R.layout.dialog_layout_add_team, null);
添加 attachToRoot 值并没有改变错误:
final View dialogView = inflater.inflate(R.layout.dialog_layout_add_team, null, false);
更新: dialog_layout_add_team.xml 文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/root_add_team_dialog_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="8dp"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/enter_a_team_title"
android:textColor="@color/primaryTextColor" />
<EditText
android:id="@+id/team_title_edit_text_add_team"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/team_title" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/add_players"
android:textColor="@color/primaryTextColor" />
<TextView
android:id="@+id/current_players_text_view_add_team"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/current_players" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/player_number_edit_text_add_team"
android:layout_weight="80"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:hint="@string/player_number"
android:inputType="number" />
<view
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="20"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/player_name_edit_text_add_team"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="80"
android:hint="@string/player_name" />
<ImageButton
android:id="@+id/add_player_imageButton_add_team"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="20"
app:srcCompat="@drawable/ic_person_add_white_24dp" />
</LinearLayout>
谢谢你的帮助!
解决方案
推荐阅读
- html - 在 aspx 文件中无法识别 CSS
- python - assertRaises(AttributeError, ...) 不起作用。模块“myModule”没有属性“main”(Python 单元测试)
- rust - 为大量结构实现特征时如何防止代码重复
- windows - 是否有用于获取桌面上图标位置的 Windows API?
- java - 为什么在使用 listIterator.add() 时会出现 noSuchElementException?
- game-development - 如何在游戏制作者 2 中从枪管中发射子弹 [已解决]
- python - 如何在特殊解析函数内的 ply-yacc 中引发错误?
- c++ - 使用arduino从SD卡存储文件的最后一个值
- c - Rust bindgen 找不到特定于平台的库?
- firebase - 是否可以将本地 Functions 模拟器连接到非本地 Firebase 实时数据库?