2017-07-17 92 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

相關問題