Разница между использованием контекста и getactivity во фрагменте?

Мне действительно интересно. У меня есть контекст:

Context context= getActivity(); 

Когда я использую context в Fragment для UI, такие вещи, как приложение webview, дают мне NullPointerException (Forceclose), но когда я использую getActivity() который работает хорошо. Какая разница !? Позвольте мне объяснить использование. У меня есть действия под названием «A» и «B». Активность «B» наследует NavigationDrawer и Actionbar от действия «B». Итак, есть:

 public class B extends A 

Мы знаем, что в NavigationDrawer есть основное содержание. Активность «B» использует фрагмент для основного содержимого, и я использую контекст в этом фрагменте. Я снова удивляюсь! Извините за плохой английский.

Изменить: вот мой код:

 public class PlaceholderFragment extends Fragment { public Context context = getActivity(); private static final String ARG_SECTION_NUMBER = "section_number"; public PlaceholderFragment() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_text, container, false); String text = "<html><head><link href=\"file:///android_asset/style_css.css\" rel=\"stylesheet\" type=\"text/css\"></head> <body class=\"body\"> title1 <hr> <div align=\"center\"> <img src= "+imagePath1_1+" width= \"95% \" /></div>les1</body></html>"; WebView webView= new WebView(context); webView.loadDataWithBaseURL(null,text, "text/html", "UTF-8", null); return rootView; } @Override public void onAttach(Activity activity) { super.onAttach(activity); ((enhanced) activity).onSectionAttached( getArguments().getInt(ARG_SECTION_NUMBER)); } } 

Если я использую getActivity (); Непосредственно этот код работает. То, что я пробовал: изменил context на общедоступный и окончательный, и использовал простой TextView вместо WebView.

Позвольте мне угадать … у вас есть NullPointerException? Поскольку кажется, что значение вашего context всегда равно null, так как вы объявляете его следующим образом:

 public Context context = getActivity(); 

Причина заключается в том, что эта строка кода запускается при создании Fragment и в то время, когда она не привязана к какой-либо операции, поэтому getActivity () всегда возвращает null. Если вы хотите, чтобы ваш код работал. context = getActivity() где-нибудь еще в жизненном цикле Fragment.

Intereting Posts