以前に同様の質問をしたことがあり、回答が得られず、他の多くの社員が回答を探しているようです。だから私はこの質問を投稿して、誰もが恩恵を受けることができる明確な答えを得ることを願っています。
2つのフラグメントを含むアクティビティがあります。 fragment1がチェックボックスがチェックされたかどうかを知ることができるように、チェックボックスがチェックされたときにfragment2がActivityにブール変数を設定するようにします。
これは私のコードです:
アクティビティ:
public class modestab extends Activity{
public static Context appContext;
public boolean lf=false;
public void onCreate(Bundle savedInstanceState){
appContext=this;
super.onCreate(savedInstanceState);
ActionBar tabbar= getActionBar();
tabbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
ActionBar.Tab ModesTab =tabbar.newTab().setText("Modes");
ActionBar.Tab CatTab =tabbar.newTab().setText("Categories");
Fragment ModesFragment =new modes();
Fragment CatFragment =new cats();
ModesTab.setTabListener(new MyTabsListener(ModesFragment));
CattTab.setTabListener(new MyTabsListener(CatFragment));
tabbar.addTab(ModesTab);
tabbar.addTab(CatTab);
}
フラグメント1:(上記のAcitivityで設定されたブール値lfを読み取りたい場合:
@TargetApi(11)
public class tabmodes extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View V=inflater.inflate(R.layout.tab_modes, container, false);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(lf==false) //lf here is the lf in Activity which I want to get
フラグメント2:アクティビティでlfを設定する場所
.....
lifecheck.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if(lifecheck.isChecked())
getActivity().lf=true;//Where I want to set the lf flag in Activity
;
}
});
コードはコンパイルされず、Activityでlfを設定する方法も読む方法もわかりません。誰かがgetActivity()を実行するよう提案しましたが、変数を見ることができません。
関数setlf(boolean jk)を作成しようとしましたが、表示されません...
どんな助けも歓迎です:)
たくさんの方法 :
1)アクティビティ->フラグメント
2)アクティビティ->フラグメント
フラグメント内:パブリックメソッドを作成します
アクティビティ内:activefragment publicメソッドを呼び出します:
getSupportFragmentManager (). findFragmentById (R.id.your_fragment).publicMethod(args)
3)フラグメント->アクティビティ
4)フラグメント->アクティビティ
In your Fragment:public activity getter、setter、または他のメソッドを使用して呼び出されます:
getActivity() 。getSomething()、 getActivity() 。setSomething(args)または getActivity() 。someMethod(args)
2つの方法でフラグメント間でデータを渡すことができます。
まず、 setArguments(...) および getArguments(....) を使用してそれを行うことができます
次に、 Call back を使用してそれを行うことができます
また、EventBusを使用できます。本当に簡単です。 https://github.com/greenrobot/EventBus
私の古い答えのような静的メソッドを絶対に使用しないでください:)