Мне действительно интересно. У меня есть контекст:
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.