2017-07-17 10 views
0

私はフラグメント内にスピナーを作成しようとしていますが、スピナーダイアログを作成しているときに ".this"を使ってフラグメントjavaクラスを認識できません。私は代わりに何をしなければならないのか分からず、どんな助けでも大変感謝しています。 (ダイアログがOnCreateの方法で定義されている)フラグメント内にスピナーを作成するにはどうすればよいですか?

ArrayList<String> ingredients = new ArrayList<>(); 
SpinnerDialog spinnerDialog; 
Button add; 

spinnerDialog = new SpinnerDialog(Add.this, ingredients, "Select An Ingredient"); 
    spinnerDialog.bindOnSpinerListener(new OnSpinerItemClick() { 
     @Override 
     public void onClick(String Ingredient, int i) { 

      Toast.makeText(Add.super.getContext(), "Selected ", Toast.LENGTH_SHORT).show(); 

     } 
    }); 

    add = (Button) getView().findViewById(R.id.add); 
    add.setOnClickListener(new View.OnClickListener(){ 

     @Override 
     public void onClick(View v){ 

      spinnerDialog.showSpinerDialog(); 

     } 

    }); 

答えて

0

getActivity()Add.thisを交換。

問題が何であるか正確にはわかりません(私はSpinnerDialogがどのように実装されているかわからないため)が、コンストラクタの最初の引数がContextである可能性が非常に高いです。 FragmentContextを実装していませんが、Activityを実装しています。したがって、Fragmentインスタンスを渡す代わりに、そのインスタンスを含むActivityを渡してください。

0

Add.thisは、コンテキストパラメータです。

Add.classがフラグメントの場合は、コンテキストパラメータを渡すときにgetActivity()を使用します。

しかし、Add.classがアクティビティの場合は、代わりにAdd.thisとなります。

関連する問題