может ли объект привязки данных быть нулевым в Android - PullRequest
0 голосов
/ 19 декабря 2018

Я использую привязку данных в своем проекте.Во фрагменте я использую DataBinding, как показано ниже:

public class ExampleFragment extends Fragment  {

     private FragmentExampleBinding mFragmentExampleBinding;

     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        //initializing data binding object
        mFragmentExampleBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_example, container, false);
        // is there any posibility that mFragmentExampleBinding can be null
        View view = mFragmentExampleBinding.getRoot();
        return view;
      }
}

Мой вопрос: есть ли вероятность, что объект привязки данных может вернуть ноль?Нужно ли нам делать проверку нуля при использовании привязки данных?

1 Ответ

0 голосов
/ 19 декабря 2018

Обычно это вполне заслуживает доверия, и мне не нужно проверять это каждый раз.

https://developer.android.com/reference/android/databinding/DataBindingUtil#inflate

 * @return The newly-created binding for the inflated layout or <code>null</code> if
 * the layoutId wasn't for a binding layout.

Но это может быть нулевым, если естьчто-то не так в xml.

Однако, если вы решили очистить ссылку на представление в onDestroyView (установить привязку к нулю), чтобы избежать утечки памяти, вам нужно выполнить проверку нуля или вызвать исключениев случае, если вы обращаетесь к привязке после того, как представление уничтожено.

По крайней мере, на данный момент, когда используется одно действие + архитектура с несколькими фрагментами, я должен установить привязку (и другие ссылки на представление) на ноль, чтобы избежать утечки памяти.

...