I'm a beginner & I don't know most of the Android Paradigms please help!!
Sorry!! if anyone find's this question a duplicate.
I'm facing a problem with ProgressDialog
dismissing on null reference during loading of a Spinner
.
It happens once during disconnecting & reconnecting to Internet, but before disconnection everything works fine i.e the loading stops when there is something in the Spinner
I've set the dismiss()
method to execute when there is something in the Spinner
using if()
statement, but I don't know how it executes before it finds something in the Spinner
, I've even set a Regex
so that the dialog should get dismissed when it matches the Regex
& even after this the dialog dismisses anyway.
Here's my code
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
spingroup = (Spinner) findViewById(R.id.spingrp);
if(Connection.isConn(this)) {
Toast.makeText(this, "No internet connection detected, please check your internet connection", Toast.LENGTH_SHORT).show();
AlertDialog alertDog = new AlertDialog.Builder(this).create();
alertDog.setTitle("No Internet!!");
alertDog.setMessage("Please connect to internet & try again");
alertDog.setIcon(R.drawable.no_internet);
alertDog.setCanceledOnTouchOutside(false);
alertDog.setButton("Exit", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
alertDog.show();
}
if (!Connection.isConn(this)){
progress = ProgressDialog.show(MainActivity.this, "Loading Group","Please wait!!", true);
progress.setCancelable(true);
progress.setIcon(R.drawable.list_icon);
}
//Yes this if() statement gets called before the null reference error
dbrefspingrp = FirebaseDatabase.getInstance().getReference();
dbrefspingrp.child("2018-19").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
final List<String> listgrp = new ArrayList<String>();
listgrp.add("--Select Group--");
for (DataSnapshot grpsnap: dataSnapshot.getChildren()){
String group = grpsnap.getKey();
listgrp.add(group);
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_item,listgrp );
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
adapter.notifyDataSetChanged();
spingroup.setAdapter(adapter);
String test = listgrp.get(listgrp.size()-1);
boolean reg = Pattern.matches("(?i)group no [0-9]{2}", test);
if (reg == true) {
progress.dismiss();
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
My Attempts
1-
if (spingroup.getSelectedItem().toString().equals("--Select Group--")) {
progress.dismiss();
}
2-
if (!spingroup.getSelectedItem().toString().equals(null)) {
progress.dismiss();
}
3-
if (spingroup.getSelectedItem().toString().equals("--Select Group--") && spingroup.getSelectedItem.toString != (null) {
progress.dismiss();
}