NullPointerException nel metodo onCreateView () di Fragment

Il mio codice:

@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // t-alk és impresszumhoz LinearLayout layout = (LinearLayout) getActivity().findViewById( R.layout.impresszum); ((TextView) layout.findViewById(R.id.impresszumtext1)).setText(" v.");... 

Questo è un metodo oncreateview di un frammento e ho un nullpointerexception all'ultima row

  • Android: ottiene HTML dalla pagina web come String con HttpClient non funziona
  • Nascondi / Mostra la barra di azione Barra delle opzioni per diversi frammenti
  • Come scegliere un'image dalla galleria (SD Card) per la mia applicazione?
  • Non in grado di vedere l'opzione cloud in Servizi sviluppatori di Android Studio 2.2
  • Come rimuovere l'imbottitura nei pulsanti in Android?
  • Come trovare e triggersre la modalità di debug USB su Nexus 4
  •  03-04 13:48:20.149: E/AndroidRuntime(32586): at com.myapp.TestFragment.onCreateView(TestFragment.java:53) 

    Ecco l'integer onCreateView ():

     @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // feltételekhez és folyamatokhoz WebView wv = new WebView(getActivity()); FrameLayout flayout = new FrameLayout(getActivity()); flayout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); flayout.setBackgroundResource(R.drawable.gradient_gray_light); wv.setInitialScale(100); wv.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY); wv.setBackgroundColor(getResources().getColor(R.color.transparent2)); wv.setPadding(5, 5, 5, 5); wv.setWebViewClient(new WebViewClient() { public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { Toast.makeText(getActivity(), description, Toast.LENGTH_SHORT) .show(); Toast.makeText(getActivity(), "Hiba történt a betöltés során", Toast.LENGTH_LONG).show(); } @Override public void onPageFinished(WebView view, final String url) { progressDialog.cancel(); } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { progressDialog = ProgressDialog.show(getActivity(), "", "Loading..."); progressDialog.setCancelable(true); progressDialog.setCanceledOnTouchOutside(false); } }); // feltételek if (mContent.equalsIgnoreCase("Feltételek")) { getActivity().getWindow().setFormat(PixelFormat.RGBA_8888); wv.loadUrl("file:///android_asset/conditions.htm"); flayout.addView(wv); return flayout; } // folyamatok else if (mContent.equalsIgnoreCase("Folyamatok")) { getActivity().getWindow().setFormat(PixelFormat.RGBA_8888); wv.loadUrl("file:///android_asset/process.htm"); flayout.addView(wv); return flayout; } // T-alkalmazások else if (mContent.equalsIgnoreCase("T-alkalmazások")) { } // Impresszum else if (mContent.equalsIgnoreCase("Impresszum")) { final String TAG = "Impresszum"; String versionName; String appName; appName = getResources().getString(R.string.app_name); LinearLayout layout = (LinearLayout) getActivity().findViewById( R.layout.impresszum); try { versionName = getActivity().getPackageManager().getPackageInfo( getActivity().getPackageName(), 0).versionName; ((TextView)layout.findViewById(R.id.impresszumtext1)).setText(appName + " v." + versionName); } catch (NameNotFoundException ex) { Log.e(TAG + ".1", "error: " + ex.getMessage(), ex); } return layout; } return layout; } 

    E sto usando ViewPagerIndicator.

    Mi dispiace se questo è noob, i miei occhi scorrono … Grazie per il tuo aiuto!

    Infine la soluzione:

    Non è necessario:

     LinearLayout layout = (LinearLayout) view .findViewById(R.layout.impresszum); 

    Invece questo dovrebbe essere utilizzato:

     View view = inflater.inflate(R.layout.impresszum, container, false); 

    E un'altra modifica in questa linea:

     ((TextView) **view**.findViewById(R.id.impresszumtext1)) .setText(appName + " v." + versionName); 

    Ho trovato qualche spiegazione: anche se penso bene, innanzitutto ho bisogno di gonfiare il layout per poter accedere agli oggetti utilizzando "findViewById" … È in agguato, perché setcontentview () lo fa per noi.

  • Come distriggersre lo scorrimento di NestedScrollView & CollapsingToolbarLayout, ad esempio quando non c'è più contenuto sotto?
  • Applicazione YouTube Android Play Intent Video
  • AudioFlinger non è riuscito a creare la traccia. stato: -12
  • Come aggiungere il bordo all'elenco di visualizzazione e ai diversi colors della row contemporaneamente
  • Sherlok della barra di azione di Android non mostra divisore
  • Agente utente di Android HTTP
  • 2 Solutions collect form web for “NullPointerException nel metodo onCreateView () di Fragment”

    Ecco gli interni del ciclo di vita del frammento:


    FragmentManager imposta il valore di attività per un Fragment esegue una transizione di stato :

     f.mActivity = mActivity; f.mFragmentManager = mActivity.mFragments; f.mCalled = false; f.onAttach(mActivity); 

    Inoltre, imposta questo valore a zero, dopo aver staccato il Fragment :

     f.mCalled = false; f.onDetach(); . . . f.mActivity = null; f.mFragmentManager = null; 

    Quindi, il valore non dovrebbe essere nullo, tra onAttach() e onDetach() , se each altra cosa va bene.


    Per essere sicuri, spostare tutto questo codice su onActivityCreated() ;

    Prima wherevo gonfiare il layout, per poter utilizzare findViewById () – il codice corretto è ora incluso nella domanda.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.