如何在片段中创建一个微调器?
问题描述:
我想在一个片段中创建一个微调器,但在使微调器对话框无法识别片段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();
}
});
答
替换Add.this
与getActivity()
。
很难确切地说出问题所在(因为我不知道SpinnerDialog
是如何实现的),但是构造函数的第一个参数是Context
的机会非常好。 Fragment
s不执行Context
,但是Activity
s执行。因此,不要传入Fragment
实例,请传入其包含Activity
。
答
Add.this
是上下文参数。
如果Add.class
是片段,则在传递上下文参数时使用getActivity()
。
但是如果Add.class
是一项活动,则改为Add.this
。