title: Android - Attempt to invoke virtual method 'void android.view.View.getBoundsOnScreen(android.graphics.Rect)' on a null object reference
body: <p>I have a simple address form like this:</p>
  
  <p>Java:</p>
  
  <pre><code>public class NewAddressActivity extends AppCompatActivity {
  
  private TextInputLayout mStreetLayout;
  private TextInputLayout mNumberLayout;
  private TextInputLayout mNeighborhoodLayout;
  private TextInputLayout mCityLayout;
  private TextInputLayout mStateLayout;
  private TextInputLayout mCepLayout;
  private TextInputLayout mPhoneLayout;
  private EditText mStreetText;
  private EditText mNumberText;
  private EditText mComplementText;
  private EditText mNeighborhoodText;
  private EditText mCityText;
  private EditText mStateText;
  private EditText mCepText;
  private EditText mPhoneText;
  
  private Address mAddressEditing;
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_new_address);
  
      ActionBar actionBar = getSupportActionBar();
      if (actionBar != null) {
          actionBar.setDisplayHomeAsUpEnabled(true);
      }
  
      mStreetLayout = findViewById(R.id.street_layout);
      mNumberLayout = findViewById(R.id.number_layout);
      mNeighborhoodLayout = findViewById(R.id.neighborhood_layout);
      mCityLayout = findViewById(R.id.city_layout);
      mStateLayout = findViewById(R.id.state_layout);
      mCepLayout = findViewById(R.id.cep_layout);
      mPhoneLayout = findViewById(R.id.phone_layout);
      mStreetText = findViewById(R.id.street_text);
      mNumberText = findViewById(R.id.number_text);
      mComplementText = findViewById(R.id.complement_text);
      mNeighborhoodText = findViewById(R.id.neighborhood_text);
      mCityText = findViewById(R.id.city_text);
      mStateText = findViewById(R.id.state_text);
      mCepText = findViewById(R.id.cep_text);
      mPhoneText = findViewById(R.id.phone_text);
  
      mAddressEditing = getIntent().getParcelableExtra(AppConstants.ADDRESS_EXTRA);
  
      if (mAddressEditing != null) {
          getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
          if (actionBar != null) {
              actionBar.setTitle(R.string.edit_address);
          }
          mStreetText.setText(mAddressEditing.getStreet());
          mNumberText.setText(mAddressEditing.getNumber());
          mComplementText.setText(mAddressEditing.getComplement());
          mNeighborhoodText.setText(mAddressEditing.getNeighborhood());
          mCityText.setText(mAddressEditing.getCity());
          mStateText.setText(mAddressEditing.getState());
          mCepText.setText(mAddressEditing.getCep());
          mPhoneText.setText(mAddressEditing.getPhone());
          mStreetText.setSelection(mAddressEditing.getStreet().length());
      }
  }
  
  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
      MenuInflater inflater = getMenuInflater();
      inflater.inflate(R.menu.menu_new_address, menu);
      return true;
  }
  
  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
      switch (item.getItemId()) {
          case android.R.id.home:
              finish();
              return true;
          case R.id.action_save:
              save();
              return true;
      }
      return super.onOptionsItemSelected(item);
  }
  
  @SuppressLint("StaticFieldLeak")
  private void save() {
      String street = mStreetText.getText().toString().trim();
      String number = mNumberText.getText().toString().trim();
      String complement = mComplementText.getText().toString().trim();
      String neighborhood = mNeighborhoodText.getText().toString().trim();
      String city = mCityText.getText().toString().trim();
      String state = mStateText.getText().toString().trim();
      String cep = mCepText.getText().toString().trim();
      String phone = mPhoneText.getText().toString().trim();
  
      boolean hasError = false;
  
      if (TextUtils.isEmpty(street)) {
          hasError = true;
          mStreetLayout.setErrorEnabled(true);
          mStreetLayout.setError(getString(R.string.fill_the_field));
      }
      if (TextUtils.isEmpty(number)) {
          hasError = true;
          mNumberLayout.setErrorEnabled(true);
          mNumberLayout.setError(getString(R.string.fill_the_field));
      }
      if (TextUtils.isEmpty(neighborhood)) {
          hasError = true;
          mNeighborhoodLayout.setErrorEnabled(true);
          mNeighborhoodLayout.setError(getString(R.string.fill_the_field));
      }
      if (TextUtils.isEmpty(city)) {
          hasError = true;
          mCityLayout.setErrorEnabled(true);
          mCityLayout.setError(getString(R.string.fill_the_field));
      }
      if (TextUtils.isEmpty(state)) {
          hasError = true;
          mStateLayout.setErrorEnabled(true);
          mStateLayout.setError(getString(R.string.fill_the_field));
      }
      if (TextUtils.isEmpty(cep)) {
          hasError = true;
          mCepLayout.setErrorEnabled(true);
          mCepLayout.setError(getString(R.string.fill_the_field));
      }
      if (TextUtils.isEmpty(phone)) {
          hasError = true;
          mPhoneLayout.setErrorEnabled(true);
          mPhoneLayout.setError(getString(R.string.fill_the_field));
      }
  
      if (hasError) {
          return;
      }
  
      final Address address = new Address();
      if (mAddressEditing != null) {
          mAddressEditing.setStreet(street);
          mAddressEditing.setNumber(number);
          mAddressEditing.setComplement(complement);
          mAddressEditing.setNeighborhood(neighborhood);
          mAddressEditing.setCity(city);
          mAddressEditing.setState(state);
          mAddressEditing.setCep(cep);
          mAddressEditing.setPhone(phone);
      } else {
          address.setStreet(street);
          address.setNumber(number);
          address.setComplement(complement);
          address.setNeighborhood(neighborhood);
          address.setCity(city);
          address.setState(state);
          address.setCep(cep);
          address.setPhone(phone);
      }
  
      new AsyncTask&lt;Void, Void, Void&gt;() {
          @Override
          protected Void doInBackground(Void... voids) {
              if (mAddressEditing != null) {
                  MainApplication.getInstance().getAddressDao().update(mAddressEditing);
              } else {
                  MainApplication.getInstance().getAddressDao().insert(address);
              }
              return null;
          }
  
          @Override
          protected void onPostExecute(Void aVoid) {
              Toast.makeText(NewAddressActivity.this,
                      mAddressEditing != null ? R.string.address_edited_successfully :
                              R.string.address_created_successfully, Toast.LENGTH_SHORT).show();
              setResult(Activity.RESULT_OK);
              finish();
          }
      }.execute();
  }
  }
  </code></pre>
  
  <p>xml:</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"&gt;
  
  &lt;android.support.constraint.ConstraintLayout
      android:layout_width="match_parent"
      android:layout_height="wrap_content"&gt;
  
      &lt;android.support.design.widget.TextInputLayout
          android:id="@+id/street_layout"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:layout_marginEnd="50dp"
          android:layout_marginLeft="50dp"
          android:layout_marginRight="50dp"
          android:layout_marginStart="50dp"
          android:layout_marginTop="16dp"
          app:layout_constraintTop_toTopOf="parent"&gt;
  
  
          &lt;EditText
              android:id="@+id/street_text"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:hint="@string/street"
              android:imeOptions="actionNext"
              android:inputType="textCapSentences"
              android:maxLines="1"
              android:singleLine="true" /&gt;
      &lt;/android.support.design.widget.TextInputLayout&gt;
  
      &lt;android.support.design.widget.TextInputLayout
          android:id="@+id/number_layout"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:layout_marginEnd="50dp"
          android:layout_marginLeft="50dp"
          android:layout_marginRight="50dp"
          android:layout_marginStart="50dp"
          android:layout_marginTop="16dp"
          app:layout_constraintTop_toBottomOf="@id/street_layout"&gt;
  
          &lt;EditText
              android:id="@+id/number_text"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:hint="@string/number"
              android:imeOptions="actionNext"
              android:inputType="textCapSentences"
              android:maxLines="1"
              android:singleLine="true" /&gt;
      &lt;/android.support.design.widget.TextInputLayout&gt;
  
      &lt;android.support.design.widget.TextInputLayout
          android:id="@+id/complement_layout"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:layout_marginEnd="50dp"
          android:layout_marginLeft="50dp"
          android:layout_marginRight="50dp"
          android:layout_marginStart="50dp"
          android:layout_marginTop="16dp"
          app:layout_constraintTop_toBottomOf="@id/number_layout"&gt;
  
          &lt;EditText
              android:id="@+id/complement_text"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:hint="@string/complement"
              android:imeOptions="actionNext"
              android:inputType="textCapSentences"
              android:maxLines="1"
              android:singleLine="true" /&gt;
      &lt;/android.support.design.widget.TextInputLayout&gt;
  
      &lt;android.support.design.widget.TextInputLayout
          android:id="@+id/neighborhood_layout"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:layout_marginEnd="50dp"
          android:layout_marginLeft="50dp"
          android:layout_marginRight="50dp"
          android:layout_marginStart="50dp"
          android:layout_marginTop="16dp"
          app:layout_constraintTop_toBottomOf="@id/complement_layout"&gt;
  
          &lt;EditText
              android:id="@+id/neighborhood_text"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:hint="@string/neighborhood"
              android:imeOptions="actionNext"
              android:inputType="textCapSentences"
              android:maxLines="1"
              android:singleLine="true" /&gt;
      &lt;/android.support.design.widget.TextInputLayout&gt;
  
      &lt;android.support.design.widget.TextInputLayout
          android:id="@+id/city_layout"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:layout_marginEnd="50dp"
          android:layout_marginLeft="50dp"
          android:layout_marginRight="50dp"
          android:layout_marginStart="50dp"
          android:layout_marginTop="16dp"
          app:layout_constraintTop_toBottomOf="@id/neighborhood_layout"&gt;
  
          &lt;EditText
              android:id="@+id/city_text"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:hint="@string/city"
              android:imeOptions="actionNext"
              android:inputType="textCapSentences"
              android:maxLines="1"
              android:singleLine="true" /&gt;
      &lt;/android.support.design.widget.TextInputLayout&gt;
  
      &lt;android.support.design.widget.TextInputLayout
          android:id="@+id/state_layout"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:layout_marginEnd="50dp"
          android:layout_marginLeft="50dp"
          android:layout_marginRight="50dp"
          android:layout_marginStart="50dp"
          android:layout_marginTop="16dp"
          app:layout_constraintTop_toBottomOf="@id/city_layout"&gt;
  
          &lt;EditText
              android:id="@+id/state_text"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:hint="@string/state"
              android:imeOptions="actionNext"
              android:inputType="textCapSentences"
              android:maxLines="1"
              android:singleLine="true" /&gt;
      &lt;/android.support.design.widget.TextInputLayout&gt;
  
      &lt;android.support.design.widget.TextInputLayout
          android:id="@+id/cep_layout"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:layout_marginEnd="50dp"
          android:layout_marginLeft="50dp"
          android:layout_marginRight="50dp"
          android:layout_marginStart="50dp"
          android:layout_marginTop="16dp"
          app:layout_constraintTop_toBottomOf="@id/state_layout"&gt;
  
          &lt;EditText
              android:id="@+id/cep_text"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:hint="@string/cep"
              android:imeOptions="actionNext"
              android:inputType="number"
              android:maxLines="1"
              android:singleLine="true" /&gt;
      &lt;/android.support.design.widget.TextInputLayout&gt;
  
      &lt;android.support.design.widget.TextInputLayout
          android:id="@+id/phone_layout"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:layout_marginEnd="50dp"
          android:layout_marginLeft="50dp"
          android:layout_marginRight="50dp"
          android:layout_marginStart="50dp"
          android:layout_marginTop="16dp"
          app:layout_constraintTop_toBottomOf="@id/cep_layout"&gt;
  
          &lt;EditText
              android:id="@+id/phone_text"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:hint="@string/phone"
              android:imeOptions="actionDone"
              android:inputType="phone|textCapSentences"
              android:maxLines="1"
              android:singleLine="true" /&gt;
      &lt;/android.support.design.widget.TextInputLayout&gt;
  &lt;/android.support.constraint.ConstraintLayout&gt;
  &lt;/ScrollView&gt;
  </code></pre>
  
  <p>How you can see on java, <code>mAddressEditing</code> variable is received from intent, when it´s not null it means user wants to edit its address.</p>
  
  <p>All of the fields are being filled as expected, however when I tap on an edit text to change its value it's crashing...</p>
  
  <p>Crash:</p>
  
  <pre><code>FATAL EXCEPTION: main 
  Process: br.com.fornaro.armariovirtual, PID: 5540
  java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.View.getBoundsOnScreen(android.graphics.Rect)' on a null object reference at android.app.assist.AssistStructure$WindowNode.&lt;init&gt;(AssistStructure.java:484)
  at android.app.assist.AssistStructure.&lt;init&gt;(AssistStructure.java:1908)
  at android.app.ActivityThread.handleRequestAssistContextExtras(ActivityThread.java:3035)
  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1807)
  at android.os.Handler.dispatchMessage(Handler.java:105)
  at android.os.Looper.loop(Looper.java:164)
  at android.app.ActivityThread.main(ActivityThread.java:6541)
  at java.lang.reflect.Method.invoke(Native Method)
  at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
  </code></pre>
  
  <p>I have no idea why it's crashing.</p>
  
  <p>Steps to reproduce:
  1. Edit an adress from previous screen passing the Address object as parameter on intent
  2. Click on an edit text to change it's value
  3. Crash!</p>