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
                {

これは私がやりたいことの高レベルです。したがって、アクティビティに設定された lf_ch にアクセスする方法、または 2 番目のフラグメントのチェックボックスに直接アクセスする方法が必要です。

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 に答える