我正在创建一个笔记记录应用,每个笔记都包含一系列任务。我使用领域在每个笔记上为其各自的任务创建一对多的关系。每次我尝试向笔记添加任务时,它都会给我一个空指针异常,错误指向此处:
Set<String> myStrSet = new HashSet<String>();
Set<String> duplicateSet = new HashSet<String>();
for(String str : myArrayList){
if(myStrSet.contains(str)){
duplicateSet.add(str);
} else {
myStrSet.add(str);
}
}
for(String str : duplicateSet){
myStrSet.remove(str);
}
for(String str : myStrSet){
System.out.println("Print non-duplicate elements : " + str);
}
以下是活动的完整代码,包括上面的代码:
note.getTaskItems().add(t);
堆栈追踪:
public class TaskActivity extends AppCompatActivity implements TaskAdapter.IconClick {
RecyclerView recview;
TaskAdapter adapter;
ArrayList<TaskItem> listData;
Realm trealm;
EditText edtTask;
TaskItem taskItem;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TaskMainBinding binding = DataBindingUtil.setContentView(this, R.layout.task_main);
trealm.getDefaultInstance();
//RecyclerView
final LinearLayoutManager layoutManager = new LinearLayoutManager(this);
recview = (RecyclerView) findViewById(R.id.task_rec);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
recview.setLayoutManager(layoutManager);
//Realm
Realm.init(getApplicationContext());
//TaskRealmHelper helper = new TaskRealmHelper(trealm);
listData = retrieve();
adapter = new TaskAdapter(this, listData);
recview.setAdapter(adapter);
binding.fbtn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
displayInputDialog();
}
});
}
private void displayInputDialog() {
Dialog d = new Dialog(this);
d.setTitle("save to realm");
d.setContentView(R.layout.dialog_box);
edtTask = (EditText) d.findViewById(R.id.edtTask);
Button btn1 = (Button) d.findViewById(R.id.btn1);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//get
//TaskItem t = new TaskItem();
//t.setTasks(edtTask.getText().toString());
//save
save(edtTask.getText().toString());
edtTask.setText("");
//refresh
//listData = retrieve();
adapter = new TaskAdapter(TaskActivity.this, listData);
recview.setAdapter(adapter);
//adapter.notifyDataSetChanged();
}
});
d.show();
}
public void save(final String input) {
trealm = Realm.getDefaultInstance();
trealm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
//taskItem = realm.createObject(TaskItem.class,UUID.randomUUID().toString());
TaskItem t = new TaskItem();
t.setTaskid(UUID.randomUUID().toString());
t.setTasks(input);
//t = realm.copyToRealmOrUpdate(t);
NoteItem note = trealm.where(NoteItem.class)
.equalTo("Noteid", getIntent().getExtras().getString("taskid"))
.findFirst();
listData.add(t);
note.getTaskItems().add(t);
}
});
}
public ArrayList<TaskItem> retrieve()
{
trealm = Realm.getDefaultInstance();
ArrayList<TaskItem> tasks = new ArrayList<>();
RealmQuery<NoteItem> q = trealm.where(NoteItem.class);
if(tasks.size()>0)
{
q = q.equalTo("id", getIntent().getExtras().getString("taskid"));
}
RealmResults<TaskItem> item = trealm.where(TaskItem.class)
//.equalTo("taskid","id")
.findAllAsync();
for (TaskItem t : item)
{
tasks.add(t);
//note.getTaskItems().add(t);
}
return tasks;
}