gpt4 book ai didi

android - 为什么我不能在 Fragment 中调用方法

转载 作者:行者123 更新时间:2023-11-29 20:18:48 25 4
gpt4 key购买 nike

为什么无法在我的 Fragment 中调用 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 中,这可能是错误吗?如果是,我该如何解决?

最佳答案

您必须使用 this 关键字从回调方法之一调用该方法,以获取封闭 Fragment 的实例。例如..

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

无需将方法声明为静态的。事实上,将其声明为静态将是一段糟糕的代码

关于android - 为什么我不能在 Fragment 中调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33501741/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com