2015-11-03 108 views
2

爲什麼不能在我的片段中調用checkButtonAdd方法?爲什麼我不能調用片段內的方法

public class AddDataFragment extends Fragment { 
 
    DbHelper mydb; 
 

 
    Button buttonadd; 
 
    Button buttondelete; 
 

 
    private EditText inputLabel; 
 

 
    //Validator boolean 
 
    public boolean labelOk; 
 

 
    @Override 
 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
 
     View view = inflater.inflate(R.layout.fragment_add_data, container, false); 
 

 
     final Context context = getContext(); 
 
     mydb = new DbHelper(context); 
 

 
     [...] 
 

 
     //Label 
 
     inputLabel = (EditText) view.findViewById(R.id.editText_label); 
 
     inputLabel.addTextChangedListener(new TextWatcher() { 
 
      @Override 
 
      public void beforeTextChanged(CharSequence s, int start, int count, int after) {} 
 

 
      @Override 
 
      public void onTextChanged(CharSequence s, int start, int before, int count) {} 
 

 
      @Override 
 
      public void afterTextChanged(Editable s) { 
 
       Pattern p = Pattern.compile("^[A-Z]{3}-[0-9]{4}$"); 
 
       Matcher m = p.matcher(s); 
 

 
       labelOk = m.find(); 
 
       Log.d("ButtonAdd?", String.valueOf(labelOk)); 
 
      } 
 
      checkButtonAdd(); // <--------------- 
 
     }); 
 

 
     [...] 
 
      
 
     return view; 
 
    } 
 

 
    public void checkButtonAdd(){ 
 
     if (labelOk){ 
 
      buttonadd.setEnabled(true); 
 
     }else{ 
 
      buttonadd.setEnabled(false); 
 
     } 
 
    }; 
 
}

我想這應該工作,因爲我在另一個應用程序中使用它。但在MainActivitiy這可能是錯誤的,如果是的話,我該如何解決它?

+2

爲什麼不把** checkButtonAdd()**放在** afterTextChanged **方法裏面? –

+0

你認爲如果是因爲什麼?因爲這是5個驗證器之一。 (代碼被縮短)並且在每次肯定驗證之後,我要檢查if everey「validator boolean」是否爲真。 – Rastaman

回答

2

您必須使用這個關鍵字從回調方法之一調用該方法來獲取封裝Fragment的實例。例如..

@Override 
public void afterTextChanged(Editable s) { 
    // Your Statements 
    AddDataFragment.this.checkButtonAdd(); 
} 

無需聲明該方法爲靜態。實際上,聲明它是靜態的將是一段不好的代碼

+0

謝謝!這解決了它。對不起,我的初學者問題 – Rastaman

+0

對於初學者來說,這是很棘手的。 –

0

你不在正確的範圍內。

嘗試

AddDataFragment.checkButtonAdd(); 

代替。

+0

'「無法解析符號」'。但這聽起來合乎邏輯。我認爲它會起作用,因爲我在另一個應用程序中使用了它。但直接在'MainActivity'中。 – Rastaman

+0

添加靜態後沒有變化 – Rastaman

+0

我剛剛看到您的呼叫超出了每個功能。 將其放入afterTextChanged函數中。 並請提供日誌,以便更好地幫助您。 – LilaQ

相關問題