Android - 如何取消选中片段内广播组中的单选按钮?

时间:2016-09-26 15:57:21

标签: android android-fragments radio-button radio-group

我是这个Android世界的新手,我正在学习制作应用,所以我遇到了问题。

正在使用

我创建了一个片段,里面有一个包含3个单选按钮的广播组

目标

当用户返回此屏幕时,清除片段内的所有单选按钮

问题

我不知道如何实现

问题

如何清除单选按钮的所有检查?

已完成步骤

我尝试了以下内容:

但似乎我不能这样做

代码

这段代码对我不起作用(来自上面的帖子)

protected void onResume() 
{  
    RadioGroup rg=(RadioGroup)findViewById(R.id.RG);
    rg.clearCheck();  
    super.onResume();  
} 

但我有以下内容:

public class Operations extends Fragment
{
    RadioButton surfArea, rad, diam;
    RadioGroup radG;
    Button openSelect;

    public Operations()
    {
        // Required empty public constructor
    }

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

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

    @Override
    public View onCreateView(LayoutInflater inflater,
                             ViewGroup container,
                             Bundle savedInstanceState)
    {
        View rootView = inflater.inflate(R.layout.fragment_operations_sphere, container, false);

        surfArea = (RadioButton) rootView.findViewById(R.id.RB_surfArea);
        rad = (RadioButton) rootView.findViewById(R.id.RB_Rad);
        diam = (RadioButton) rootView.findViewById(R.id.RB_Diam);
        openSelect = (Button) rootView.findViewById(R.id.btn_open_select);

        //This piece is for testing purposes
        openSelect.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                if (surfArea.isChecked())
                {
                    Intent sa = new Intent(getContext(), OperSphere.class);
                    startActivity(sa);
                }
            }
        });

        return rootView;
    }
    //Here is where I'm stuck
    @Override
    public void onResume()
    {
        super.onResume();
    }
}

我有兴趣将代码放在onResume()

我知道有关于片段(https://developer.android.com/guide/components/fragments.html)的文档,但那些不能回答我的问题

提前致谢

4 个答案:

答案 0 :(得分:1)

1)在onCreateView方法中将您的RadioGroup初始化

private RadioGroup rg;

@Override
public View onCreateView(LayoutInflater inflater,
                         ViewGroup container,
                         Bundle savedInstanceState)
{
    View rootView = inflater.inflate(R.layout.fragment_operations_sphere, container, false);

    // initialize your radiogroup here
    rg = (RadioGroup) rootView.findViewById(R.id.RG);

    .....
    // Rest of your code
}

2)现在调用以下方法,即 clearSelection(),无论你想在哪里UNCHECK RadioButtons(但在上面的代码之后)。

private void clearSelection(){
    if(rg != null) rg.clearCheck();  
}

3)示例:如果要取消选中onResume()中的RadioButtons,可以从那里调用

@Override
public void onResume(){
    super.onResume();

    clearSelection();
}

如果你想从其他方法中做到这一点,它甚至可以作为

private void myMethod(){

    // need to clear radio buttons
    clearSelection();

    // rest of my code
}

答案 1 :(得分:0)

您是否尝试过将呼叫super.onResume()置于您想要实现的目标之前......

答案 2 :(得分:0)

在onResume回调中调用radioGroup的clearCheck()方法,如:

@Override
protected void onResume() {  
super.onResume();  
rg.clearCheck();
    } 

答案 3 :(得分:0)

对于面临相同问题的任何人,在片段之间导航时,都可以这样做以使其正常工作。

radioButton.setSaveEnabled(false);

请确保对组中的所有单选按钮(而不是radioGroup本身)执行

注意:此标志只能禁用该视图的保存。任何子视图可能仍会保存其状态。