0

作为android的新手,我遇到了一些问题。目前我正在尝试在我尝试开发的应用程序中使用片段。我正在尝试模拟来自 EditText 视图的数据移动,该视图显示为片段内布局的一部分。

布局包含一些其他视图,一个是空的 TextView 和一个按钮,它也是布局的一部分。我已经为片段的 onCreateView 内的按钮以编程方式实现了代码。代码片段如下。

我要做的是捕获我在 EditText 视图中键入的内容并将其加载到 EditText 类型的变量中,然后在单击按钮后将其加载到空的 TextView 中。我这样做是为了模拟从数据库中检索这些数据以显示它。同样,这里是代码:

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
        Bundle savedInstanceState) {

        // Inflate the layout for this fragment and assign it to a view
        View view = inflater.inflate(R.layout.care_meeting, container, false);

        Button button = (Button) view.findViewById(R.id.MtgButton);
        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                resName = (EditText) v.findViewById(R.id.resNameEditText);
                trsName = resName.getText().toString();
                TextView text = (TextView) v.findViewById(R.id.trNameView);
                text.setText(trsName);
            }
        });

        return view;
    }

当我检查 resName 值并发现它为 null 时出现问题,当我移动到下一行时会引发 nullpointer 异常。我试图理解为什么我输入的内容没有被变量拾取。此外,我尝试使用 getText() 方法,该方法引入了一个完全不同的问题,该问题涉及强制转换异常。所以我放弃了这一点并坚持了这一点。

我试图找到可能遇到此问题的其他人,但我正在画一个空白。我究竟做错了什么?请给我您的见解,以帮助我解决此问题。

提前致谢,

道格

4

1 回答 1

0

我找到了解决方案:我应该使用 getView() 方法:

resName = (EditText) getView().findViewById(R.id.resNameEditText);
trsName = resName.getText().toString();
TextView text = (TextView) getView().findViewById(R.id.trNameView);
text.setText(trsName);

更改工作得很好。

于 2012-11-28T02:30:33.693 回答