2017-07-17 94 views
0

我想在一个片段中创建一个微调器,但在使微调器对话框无法识别片段Java类使用“.this”。我不知道我应该怎么做,而且任何帮助将不胜感激。 (对话框在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

替换Add.thisgetActivity()

很难确切地说出问题所在(因为我不知道SpinnerDialog是如何实现的),但是构造函数的第一个参数是Context的机会非常好。 Fragment s不执行Context,但是Activity s执行。因此,不要传入Fragment实例,请传入其包含Activity

0

Add.this是上下文参数。

如果Add.class是片段,则在传递上下文参数时使用getActivity()

但是如果Add.class是一项活动,则改为Add.this

相关问题