かなり初歩的な質問で申し訳ありませんm(_ _)m
チェックボックスを持つFragmentを13個配置したviewPagerからのクリックリスナーを実装中です。
Fragment内にinterfaceを作って、Activityにコールバック...までは出来たのですが、Fragmentが13個あるから13個のinterfaceをimplementsするのか??というところでつまずいています。
色々と調べているのですがピンとくるものがありません。
Fragment内に作ったinterfaceをFragment内から分離というか、複数のFragmentから一つのinterfaceを使いまわしするというか(表現が分かりにくくスイマセン)、そういうことは可能でしょうか?それともチェックボックスやボタンは1個に対して1個のinterfaceなのでしょうか?
ちなみにチェックボックスをチェックしてtrueになる際に、指定のファイルパスに該当するファイルが外部ストレージに存在するかどうかをチェックし、無ければpopupを表示しチェックボックスはsetCheckedでfalseに、有ればそのままtrueになるといった感じです。チェックボックスのリスナーから呼び出したいメインのメソッドは全て同じなので使いまわしできたらなーと思っています。
かなり基礎的っぽいので申し訳ないです。よろしくお願いしますm(__)m。
public class FragmentBaloon extends Fragment { static boolean cbChecked = false; @Override public void onCreate(Bundle savedInstanceState) { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_eng_baloon, container, false); final CheckBox cb = (CheckBox) rootView.findViewById(R.id.cb_example); final Bundle bundle = getArguments(); cb.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (((CompoundButton) v).isChecked()) { cbIsChecked(); //諸々処理 } }); return rootView; } public interface OnPageChangeListener { public void onChange(int index); } public void cbIsChecked() { Bundle bundle = getArguments(); int index = bundle.getInt("index"); Activity activity = getActivity(); if (activity instanceof OnPageChangeListener == false) { return; } ((OnPageChangeListener) activity).onChange(index); } }
package com.example.mois; import com.example.mois.FragmentExample.OnPageChangeListener; import android.support.v4.app.FragmentManager; //略 public class Rec extends MainActivity implements OnPageChangeListener { @Override protected void onCreate(Bundle savedInstanceState) { //略 } @Override public void onResume() { //略 } public void popupCaution(int key) { //諸々略 popupCaution.showAtLocation(findViewById(R.id.layout_rec), Gravity.CENTER, 0, 0); } public static boolean[] getFileExists() { //諸々略 return fileExists; } @Override public void onChange(int index) { getFileExists(); //指定のファイルが存在するかのチェック if (!fileExists[index]) popupCaution(FILE_EXISTS); } }
public class FmPagerAdapter extends FragmentPagerAdapter { public FmPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { Bundle bundle = new Bundle(); boolean[] checked = new boolean[13]; boolean[] fileExists = new boolean[13]; checked = Main.getCbChecked(); fileExists = Main.getFileExists(); bundle.putBoolean( "baloon", checked[0]); FragmentExample fmExample = new FragmentExample(); fmExample.setArguments(bundle); //略 } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/03/28 08:50