2017-11-20 7 views
1

logcatは次のようになります。ヌルオブジェクトで仮想メソッド '...'を呼び出そうとしています 参照 ... "root_view" 。 getActivity()が正しく機能していないようです。どこでも検索しましたが、解決策は見つかりませんでした。多分問題はonAttachメソッドですか?あるいは、私はMainActivityとfragmentの間にクラスを作成しなければなりませんか?ここでフラグメント内のコンテキストを呼び出そうとするとクラッシュする

は私のフラグメントのコードは、最初のRETURNビューで

public class Profilo extends Fragment { 

    private OnFragmentInteractionListener mListener; 

    public Profilo() { 
     // Required empty public constructor 
    } 

     public static Profilo newInstance(String param1, String param2) { 
     Profilo fragment = new Profilo(); 
     Bundle args = new Bundle(); 
     args.putString(ARG_PARAM1, param1); 
     args.putString(ARG_PARAM2, param2); 
     fragment.setArguments(args); 
     return fragment; 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     if (getArguments() != null) { 
      mParam1 = getArguments().getString(ARG_PARAM1); 
      mParam2 = getArguments().getString(ARG_PARAM2); 
     } 

     ArrayList<String> namesOfNumbers = new ArrayList<String>(); 

     namesOfNumbers.add("uno"); 
     namesOfNumbers.add("due"); 
     namesOfNumbers.add("tre"); 
     namesOfNumbers.add("quattro"); 
     namesOfNumbers.add("cinque"); 
     namesOfNumbers.add("sei"); 
     namesOfNumbers.add("sette"); 
     namesOfNumbers.add("otto"); 
     namesOfNumbers.add("nove"); 
     namesOfNumbers.add("dieci"); 


     LinearLayout root_view = (LinearLayout) getView().findViewById(R.id.linear_layout_main_profilo); 
     TextView word_view_1 = new TextView(getActivity()); 
     word_view_1.setText(namesOfNumbers.get(0)); 
     root_view.addView(word_view_1); 

    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     return inflater.inflate(R.layout.fragment_profilo, container, false); 
    } 

    // TODO: Rename method, update argument and hook method into UI event 
    public void onButtonPressed(Uri uri) { 
     if (mListener != null) { 
      mListener.onFragmentInteraction(uri); 
     } 
    } 

    @Override 
    public void onAttach(Context context) { 
     super.onAttach(context); 
     if (context instanceof OnFragmentInteractionListener) { 
      mListener = (OnFragmentInteractionListener) context; 
     } else { 
      Toast.makeText(context,"NOTIFICATION FRAGMENT ATTACHED",Toast.LENGTH_SHORT).show(); 
     } 
    } 

    @Override 
    public void onDetach() { 
     super.onDetach(); 
     mListener = null; 
    } 

    public interface OnFragmentInteractionListener { 
     void onFragmentInteraction(Uri uri); 
    } 

} 
+0

getactivity()あなたが活動やあなたを呼んからコンストラクタに自分のコンテキストを渡すことができ –

+0

活動に代わりフラグメントマネージャのサポートフラグメントマネージャを使用していることを確認して、正常に動作しますと試してみてくださいgetApplicationContext()を呼び出すことができます – Saikat1529

+0

はい、私はsupportFragmentManagerを使用しましたが、getApplicationContext()も試みました。 – Mtt95dvlpr

答えて

0
  • *です。 onCreateView内のコールLinearLayoutTextView

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) 
{ 
     View view = inflater.inflate(R.layout.fragment_profilo, null); 
     LinearLayout root_view = (LinearLayout) view .findViewById(R.id.linear_layout_main_profilo); 
     TextView word_view_1 = new TextView(getActivity()); 
     word_view_1.setText(namesOfNumbers.get(0)); 
     root_view.addView(word_view_1); 

     return view; 
} 
+1

そこに行く:)人はとても速いです! – Wizard

+1

はいこれは問題なく動作します。どうもありがとうございます! – Mtt95dvlpr

+1

私は3分を残す必要があります:)感謝の皆さん – Mtt95dvlpr

関連する問題