4

我是 Android 编码的初学者,我正在尝试用两个片段做一个应用程序。不幸的是,当我向布局添加代码以设置操作时,它会使我的应用程序崩溃,所以我想知道我应该将代码放在片段文件的哪个位置。如果我取出函数 onCreate,应用程序不会崩溃并且我的布局很好。

这是我的代码。非常感谢您的回答。

public class FragmentOne extends Fragment{

    public static final String TAG = "FragmentOne";


    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View v = View.inflate(getActivity(), R.layout.fragmentone, null);

        return v;
    }

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        final EditText etData = (EditText) getView().findViewById(R.id.etData);


    }
}
4

2 回答 2

10

首先,我可以在您的代码中看到一些错误。首先正如@user1873880提到的,onCreate()总是在之前调用onCreateView(),所以您应该考虑在onCreateView(). 我可以看到的第二个错误是你没有创建你的View,因为它设计用于Fragment. 在我看来,你的 Fragment 应该是这样的:

public class FragmentOne extends Fragment {

    private static final String TAG = "FragmentOne";

    public View onCreateView(LayoutInflater inflater, ViewGroup container,  Bundle savedInstanceState) {
        super.onCreateView(inflater, container, savedInstanceState);

        // create your view using LayoutInflater 
        return inflater.inflate(R.layout.fragmentone, container, false);
    }

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // do your variables initialisations here except Views!!!
    }

    public void onViewCreated(View view, Bundle savedInstanceState){
        super.onViewCreated(view, savedInstanceState);
        // initialise your views
        EditText etData = (EditText) view.findViewById(R.id.etData);
    }
}

希望这对你有帮助!:)

于 2013-07-27T20:39:48.523 回答
0

原因是onCreate在之前调用onCreateView,所以你只能在onCreateView回调之后使用你的视图进行操作。有关更多信息,请在此处查看片段生命周期。

于 2013-07-27T19:48:21.800 回答