RadioButton何时恢复状态?

时间:2015-05-05 04:21:45

标签: android

我想知道android系统何时还原我的应用程序。

我写了一个继承自MyRadioButton的课程RadioButton,并且当单选按钮的状态发生变化时,我将OnCheckedChangeListener添加为RadioButton将回调。 在OnCheckedChangeListener工具中,我使用了一些在OnCreate中初始化的变量。所有这些都运行良好。

但是,有一次,我的应用程序崩溃了,因为调用了OnCheckedChangeListener实现,它使用了一个未初始化的变量。我知道我的视图已存储,现在恢复数据。

我对这个动作非常困惑。它为什么以及何时被称为?

以下是我尝试解释此问题的代码。

public class MyFragment extends Fragment
        implements RadioGroup.OnCheckedChangeListener{

    private RadioGroup filterGrp;
    private NetRequest netRequest;//I use the unreal Object to explain the question.

    public static MyFragment newInstance() {
        return new MyFragment();
    }

    public MyFragment() {

    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }



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

        View rootView = inflater.inflate(R.layout.fragment_bar, container, false);
        filterGrp = (RadioGroup) rootView.findViewById(R.id.filter_group);
        return rootView;
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
    }

    @Override
    public void onViewStateRestored(Bundle savedInstanceState) {    
        super.onViewStateRestored(savedInstanceState);
    }

    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putChar("test",'flag');
    }

    @Override
    public void onStart() {
        super.onStart();
        netRequest = new NetRequest();//NetRequest must be intialized here
        filterGrp.setOnCheckedChangeListener(this);
    }

    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {
        switch (checkedId) {
            case R.id.default_filter_view:
                netRequest.name;//use netRequest's member name here.
                break;
            }
    }
}

崩溃在netRequest.name,应用程序没问题。但是很短的时间,它崩溃了。我不想判断netRequest是否为null,我只是想知道为什么它是叫它。因为它没有被用户的交互调用。

0 个答案:

没有答案