I have created a small XML parsing application for Android that
displays information in a listview and then allows a user to click on
the list view and a dialog with further info will pop up.

The problem is that when the screen orientation is changed when a
dialog screen is open I get a null pointer error.

The null pointer occurs on the following line:

---


    if(setting.getAddForPublicUserNames() == 1){

---

This line is part of my dialogPrepare method:

---


    @Override
    public void onPrepareDialog(int id, Dialog dialog) {
      switch(id) {
        case (SETTINGS_DIALOG) :

                        afpunText = "";

                if(setting.getAddForPublicUserNames() == 1){
                        afpunText = "Yes";
                }
                else{
                        afpunText = "No";
                }
          String Text = "Login Settings: " + "\n"
                           + "Password: " + setting.getPassword()  +
"\n"
                           + "Server: " + setting.getServerAddress() +
"\n"
                           + "Register: " +
setting.getRegistrarAddress() + "\n"
                           + "Realm: " + setting.getRealm() + "\n"
                           + "Public UserNames: " + afpunText  + "\n"
                                           + "Preference Settings: " + "\n"
                                           + "Request VDN: " + 
setting.getRequestVDN() + "\n"
                                           + "Handover Settings: " + "\n"
                                           + "Enable Handover: " + 
setting.getEnableHandover() +
"\n"
                                           + "Hand Over Number: " + 
setting.getHandoverNum() +
"\n";

          AlertDialog settingsDialog = (AlertDialog)dialog;
                  settingsDialog.setTitle("Auth ID: " + setting.getUserName());

                  tv = 
(TextView)settingsDialog.findViewById(R.id.detailsTextView);
                  if (tv != null)
            tv.setText(Text);

          break;
      }
    }


---

So the error is that my variable setting is null after the screen
orientation changes.

I have tried to use the onSaveInstance state methods to fix that as
follows:

---


    @Override
    public void onSaveInstanceState(Bundle savedInstanceState) {


      for(int i = 0; i < settings.size(); i++){
      savedInstanceState.putString("Username"+i,
settings.get(i).getUserName());
      savedInstanceState.putString("Password"+i,
settings.get(i).getPassword());
      savedInstanceState.putString("Server"+i,
settings.get(i).getServerAddress());
      savedInstanceState.putString("Registrar"+i,
settings.get(i).getRegistrarAddress());
      savedInstanceState.putString("Realm"+i,
settings.get(i).getRealm());
      savedInstanceState.putInt("PUserNames"+i,
settings.get(i).getAddForPublicUserNames());
      savedInstanceState.putString("RequestVDN"+i,
settings.get(i).getRequestVDN());
      savedInstanceState.putString("EnableHandOver"+i,
settings.get(i).getEnableHandover());
      savedInstanceState.putString("HandOverNum"+i,
settings.get(i).getHandoverNum());
      }

      super.onSaveInstanceState(savedInstanceState);
    }


---

and

---


    @Override
    public void onRestoreInstanceState(Bundle savedInstanceState) {
      super.onRestoreInstanceState(savedInstanceState);
      //Check to see if this is required

      // Restore UI state from the savedInstanceState.
      // This bundle has also been passed to onCreate.
      for(int i = 0; i<settings.size(); i++){
 
settings.get(i).setUserName(savedInstanceState.getString("Username"+i));
 
settings.get(i).setPassword(savedInstanceState.getString("Password"+i)) ;
 
settings.get(i).setServerAddress(savedInstanceState.getString("Server"+i));
 
settings.get(i).setRegistrarAddress(savedInstanceState.getString("Registrar"+i));
 
settings.get(i).setRealm(savedInstanceState.getString("Realm"+i));
 
settings.get(i).setAddForPublicUserNames(savedInstanceState.getInt("PUserNames"+i));
 
settings.get(i).setRequestVDN(savedInstanceState.getString("RequestVDN"+i));
 
settings.get(i).setEnableHandover(savedInstanceState.getString("EnableHandOver"+i));
 
settings.get(i).setHandoverNum(savedInstanceState.getString("HandOverNum"+i));
      }

    }

---

However the error still remains, I think I have to save the selected
setting from what was selected from the ListView? But how do I save a
setting object in onSavedInstance?

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to