2017-11-23 16 views
-2

私はボタンのクリックに基づいて4つの異なる断片をインスタンス化するアクティビティを持っています。 現在アクティブなフラグメントに追加の値を渡す必要があります。現在アクティブなフラグメントに引数を渡す方法はありますか?

最初、setArgumentsで値を渡すと、値が渡されます。しかし、2回目の値はフラグメントに渡されません。

onCreateメソッドとonCreateViewメソッドにログを記録してブレークポイントを設定しようとしましたが、これらのメソッドは2回目で呼び出されません。ここで

は私のコード活動における

コードです

Bundle bundle = new Bundle(); 
bundle.putInt("from", "1"); 
bundle.putString("label","One"); 

MyFragment1 myFragment1 = new MyFragment1(); 
myFragment1.setArguments(bundle); 
getSupportFragmentManager() 
.beginTransaction() 
.addToBackStack(null) 
.replace(R.id.fragment1, myFragment1) 
.commitAllowingStateLoss(); 

コード・フラグメント内のアクティビティから

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


    Bundle b = getArguments(); 
    if(b!=null) 
    { 

    } 


} 
+0

'公共無効のonCreate(@NullableバンドルsavedInstanceState){' intead本の 'パブリックビューonCreateView(LayoutInflaterのインフレータ、のViewGroupコンテナ、 バンドルsavedInstanceState)の内側に取​​得しようと{'あなたがここに同様の問題への解決策を見つけることができます –

+0

:https://stackoverflow.com/questions/41454596/how-to-search-in-listview-from-toolbar-in-fragment/41463851#41463851 –

答えて

0

Bundle bundle = new Bundle(); 
bundle.putInt("from", "1"); 
bundle.putString("label","One"); 
// set Fragmentclass Arguments 
Fragmentclass fragobj = new Fragmentclass(); 
fragobj.setArguments(bundle); 

フラグメントonCreateView方法において:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    String label = getArguments().getString("label");  
    int i=getArguments().getInt("from"); 
    return inflater.inflate(R.layout.fragment, container, false); 
} 
0

私は活性におけるのonCreateのコードの行を与えた溶液

を発見しました。

MyFragment1 myFragment1 = new MyFragment1(); 

フラグメントに渡す前に再起動しなければなりませんでした。

関連する問題