设置onClickListeners以编辑片段

时间:2016-04-06 18:49:30

标签: android android-fragments onclicklistener

我有一个coFragment.xml文件,其中包含一个EditText框和一些按钮。在我的coFragment.java文件中,我想将onClickListeners注册到按钮,这样当按下它们时,文本将被添加到EditText框中。

我的coFragment.java文件目前有

public class CoFragment extends Fragment implements View.OnClickListener {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup parentViewGroup,
                         Bundle savedInstanceState) {
    final View v = inflater.inflate(R.layout.coFragment, parentViewGroup, false);

    EditText input = (EditText) getView().findViewById(R.id.input_id);

    Button oneButton = (Button) v.findViewById(R.id.one_button_id);
    Button twoButton = (Button) v.findViewById(R.id.two_button_id);
    Button threeButton = (Button) v.findViewById(R.id.three_button_id);

    oneButton.setOnClickListener(this);
    twoButton.setOnClickListener(this);
    threeButton.setOnClickListener(this)
}

@Override
public void onClick(View v) {
    switch (v.getId()) {
        case R.id.one_button_id:
            input.append("1");
            break;
        case R.id.two_button_id:
            input.append("2");
            break;
        case R.id.three_button_id:
            input.append("3");
            break;
}

显然,我目前无法访问input方法中的onClick EditText对象。我怎样才能获得我想要的功能?

1 个答案:

答案 0 :(得分:1)

如果您想访问EditText之外的onCreateView(),则需要在任何方法之外声明它并在onCreateView()中初始化 -

 private EditText input;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup parentViewGroup,
                         Bundle savedInstanceState) {

....

 input = (EditText) v.findViewById(R.id.input_id);
....
}

现在,您可以在片段的任何位置使用input