我正在构建一个在FAB单击时显示警告对话框的应用程序,接受用户输入并使用该用户输入命名ExpandableListView组标题。当我点击FAB按钮并放入文本时,它会给我一个空对象引用。为什么我会在空对象引用上获取EditText.getText()'?
我初始化我的学期前onCreate()
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
ExpandableListView expandableListView;
ExpandableListViewAdapter adapter;
private FloatingActionButton addItems;
private String semester = "";
在我addItems()
方法,它是当有FAB点击调用,我创建我的自定义警告对话框,让用户输入字符串和配售它在我的ArrayList中的适配器。
public void addItems() {
final EditText et_semester = (EditText)findViewById(R.id.et_semester);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Create A Semester");
builder.setView(R.layout.custom_layout);
builder.setCancelable(false);
builder.setPositiveButton("DONE", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
semester = et_semester.getText().toString();
adapter.groupNames.add(semester);
}
});
builder.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
adapter.notifyDataSetChanged();
builder.show();
}
但是,当我点击AlertDialog完成按钮,这是我的堆栈跟踪:
05-30 05:35:10.295 20943-20943/myapp.onur.expandablelistviewexample E/AndroidRuntime: FATAL EXCEPTION: main
Process: myapp.onur.expandablelistviewexample, PID: 20943
java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference
at myapp.onur.expandablelistviewexample.MainActivity$1.onClick(MainActivity.java:45)
编辑这是我MainActivity
:
public class MainActivity extends AppCompatActivity {
ExpandableListView expandableListView;
ExpandableListViewAdapter adapter;
private FloatingActionButton addItems;
private String semester;
int counter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
expandableListView = (ExpandableListView) findViewById(R.id.expListView);
adapter = new ExpandableListViewAdapter(MainActivity.this);
expandableListView.setAdapter(adapter);
addItems = (FloatingActionButton) findViewById(R.id.add_items);
final EditText et_semester = (EditText)findViewById(R.id.et_semester);
}
public void addSemester(View v){
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("Create A Semester");
builder.setView(R.layout.custom_layout);
builder.setCancelable(false);
builder.setPositiveButton("DONE", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
final EditText et_semester = (EditText).findViewById(R.id.et_semester);
semester = etSemester.getText().toString();
adapter.groupNames.add(semester);
}
});
builder.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
adapter.notifyDataSetChanged();
builder.show();
}
}
请发表您的onCreate方法 – lelloman
move'final EditText et_semester =(EditText)findViewById(R.id.et_semester);'OnCreate'方法 –
@lelloman它在那里。 –