2

我有 2 个片段,我想从片段 1 检查片段 2 中的 CheckBox1 是否被选中。

编辑

我正在执行以下操作:在主要活动中:

@TargetApi(11)
public class gamesmodestab extends Activity{
    public static Context appContext;

    public boolean lf_ch=false;
public void onCreate(Bundle savedInstanceState){
        appContext=this;
        super.onCreate(savedInstanceState);
//Then I declare the fragments and add them

在 Fragment 中,复选框可用:

@TargetApi(11)
public class tabquests extends Fragment{ 

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

        View V=inflater.inflate(R.layout.tab_quests, container, false);
                lc=(CheckBox)V.findViewById(R.id.CheckBox01);
  lc.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){
              @Override
                public void onCheckedChanged(CompoundButton buttonView,
                        boolean isChecked) {
                  if(lc.isChecked())
                      lf_ch=true;//Wrong
                  else
                      lf_ch=false;//Wrong
              }
          });

在我想阅读 lf_ch 的片段中;

public void onClick(View v) {
                if(lf_ch==false)//Wrong
                {

这是我想做的高水平的事情。所以我想要一种访问 Activity 上设置的 lf_ch 或直接访问第二个片段中的复选框的方法。

4

1 回答 1

2

您不应该直接从另一个片段访问一个片段中的输入状态。

最好创建一个活动级别变量来保存由 cb 指示的布尔值。

public boolean lf_ch = false; // default checked state.

将您的 cb 的选中状态初始化为变量的值。

lc.setChecked(context.getActivity().lf_ch);

然后在检查状态更改时更改变量的值。

lc.setOnCheckedChangeListener(new OnCheckedChangeListener(){

            @Override
            public void onCheckedChanged(CompoundButton buttonView,
                    boolean isChecked) {
                context.getActivity().lf_ch = isChecked;

            }});

然后在 frag1 中可以测试 If_ch 的值;

if(context.getActivity().If_ch){
    // Do something
}

- - - 编辑 - - - -

@TargetApi(11)
public class gamesmodestab extends Activity{
    public static Context appContext;

    public boolean lf_ch=false;
public void onCreate(Bundle savedInstanceState){
        appContext=this;
        super.onCreate(savedInstanceState);
//Then I declare the fragments and add them
In the Frgment were the checkbox is available:

@TargetApi(11)
public class tabquests extends Fragment{ 
    gamesmodestab gmt = (gamesmodestab) getActivity();
    public CheckBox lc,
@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)//onCreateView
    {

        View V=inflater.inflate(R.layout.tab_quests, container, false);
                lc=(CheckBox)V.findViewById(R.id.CheckBox01);
  lc.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){
              @Override
                public void onCheckedChanged(CompoundButton buttonView,
                        boolean isChecked) {
                  gmt.If_ch = isChecked;
              }
          });

您还需要在此类中定义 gmt。

public void onClick(View v) {
                if(!gmt.lf_ch)
                {
于 2012-10-25T01:34:37.227 回答