У меня есть 2 действия, которые хранят / получают данные из базы данных, разные данные, но они связаны друг с другом.
В первом упражнении, например, хранятся различные блюда из пищи в виде списка, и когда я нажимаю на один из элементов, я попадаю во второе действие, где я могу хранить разные вещи под первым элементом, выбранным в первом задании.,Так, например, если я нажму на «ПИЦЦА», я попаду в новое занятие, где я могу хранить «Итальянскую пиццу».И это работает нормально.Но я хочу, чтобы средняя активность появлялась после моей первой активности, и в этой средней активности мне нужна кнопка, которая возвращает меня ко второму виду деятельности.
Так что между первым и вторым действием это не проблема, работает как заклинание.Но когда я пытаюсь использовать это среднее действие с кнопкой, оно не работает.Я предполагаю, что это как-то связано со средней активностью, что она не «связана» с базой данных для других операций.Но я не знаю, нужна помощь:)
Я получаю эту ошибку при попытке нажать кнопку добавления:
java.lang.NullPointerException: Can't pass null for argument 'pathString' in child()
at com.google.firebase.database.DatabaseReference.child(Unknown Source:40)
Первое действие:
public class Jobbliste extends AppCompatActivity {
DatabaseReference databaseJobber;
public static final String jobbnavn = "jobbnavn";
public static final String jobbId = "jobbid";
TextView jobbliste
ListView listjobber;
ImageView leggtiljobb;
List<Jobber> listjobb;
{
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_jobbliste);
databaseJobber = FirebaseDatabase.getInstance().getReference("Jobber");
databaseVerktøy = FirebaseDatabase.getInstance().getReference("Verktøy");
databaseAnsatt = FirebaseDatabase.getInstance().getReference("Ansatte");
jobbliste = (TextView) findViewById(R.id.tvjobbliste);
listjobber = (ListView) findViewById(R.id.lvjobbliste);
listjobber.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
Jobber jobber = listjobb.get(i);
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
intent.putExtra(jobbId, jobber.getJobbId());
intent.putExtra(jobbnavn, jobber.getJobbnavn());
startActivity(intent);
return false;
}
});
leggtiljobb = (ImageView) findViewById(R.id.tvleggtiljobb);
listjobb = new ArrayList<>();
søkjobb = new ArrayList<>();
leggtiljobb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent leggtil = new Intent(Jobbliste.this, Leggtiljobb.class);
startActivity(leggtil);
}
});
}
@Override
protected void onStart() {
super.onStart();
databaseJobber.orderByChild("jobbnavn").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
listjobb.clear();
for (DataSnapshot jobberSnapshot : dataSnapshot.getChildren()) {
final Jobber jobber = jobberSnapshot.getValue(Jobber.class);
listjobb.add(jobber);
final listJobber adapter = new listJobber(Jobbliste.this, listjobb);
listjobber.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
}
Вторая активность:
public class Notater extends AppCompatActivity {
public static final String jobbnavn = "jobbnavn";
public static final String jobbId = "jobbid";
TextView tvjobbnavn;
EditText etnotater;
Button btnlagrenotat;
ListView lvnotater;
Button btntest;
TextView tvjobbnavn1;
DatabaseReference databaseNotater;
DatabaseReference databaseJobber;
List<Notat> notater;
List<Jobber> listjobb;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_notater);
tvjobbnavn = (TextView) findViewById(R.id.tvjobbnavn);
tvjobbnavn1 = (TextView) findViewById(R.id.tvjobbnavn1);
etnotater = (EditText) findViewById(R.id.etnotater);
btnlagrenotat = (Button) findViewById(R.id.btnlagrenotat);
lvnotater = (ListView) findViewById(R.id.lvnotater);
btntest = (Button) findViewById(R.id.btntest);
lvnotater.setItemsCanFocus(true);
Intent intent = getIntent();
notater = new ArrayList<>();
listjobb = new ArrayList<>();
String id = intent.getStringExtra(Jobbliste.jobbId);
String navn = intent.getStringExtra(Jobbliste.jobbnavn);
tvjobbnavn.setText(navn);
databaseNotater = FirebaseDatabase.getInstance().getReference("Notater").child(id);
databaseJobber = FirebaseDatabase.getInstance().getReference("Jobber").child(id);
btnlagrenotat.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
lagrenotat();
}
});
}
@Override
protected void onStart() {
super.onStart();
databaseNotater.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
notater.clear();
for (DataSnapshot notatsnapshot : dataSnapshot.getChildren()) {
Notat notat = notatsnapshot.getValue(Notat.class);
notater.add(notat);
}
listNotater notatlistadapter = new listNotater(Notater.this, notater);
lvnotater.setAdapter(notatlistadapter);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
private void lagrenotat() {
String notatavn = etnotater.getText().toString().trim();
if (!TextUtils.isEmpty(notatavn)) {
String id = databaseNotater.push().getKey();
Notat notat = new Notat(id, notatavn);
databaseNotater.child(id).setValue(notat);
} else {
Toast.makeText(this, "Skriv noe", Toast.LENGTH_SHORT).show();
}
}
}
Моя средняя активность:
public class MainActivity extends AppCompatActivity {
public static final String jobbnavn = "jobbnavn";
public static final String jobbId = "jobbid";
Button add;
TextView text;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
add = (Button) findViewById(R.id.add);
text = (TextView) findViewById(R.id.text);
Intent intent = getIntent();
String id = intent.getStringExtra(Jobbliste.jobbId);
String navn = intent.getStringExtra(Jobbliste.jobbnavn);
text.setText(navn);
add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent leggtil = new Intent(MainActivity.this, Notater.class);
startActivity(leggtil);
}
});
}
}