2017-06-12 25 views
-3

リストビューのアイテムをクリックすると、行のデータが別のフラグメントに渡されて表示されます。しかし、今問題は、フラグメントが既に表示することができますが、データが通過することはできません。私は引数を設定するためにバンドルを使用しています。リストビューのデータはフラグメントに渡すことができません

私はすでにポストを見つけましたが、いずれかのポストは私がこの問題を解決する必要はありませ...

これは私のリストビューのJava

otherAdapter adapter = new otherAdapter(getActivity(), R.layout.grid_single, result); 
      grid_list.setAdapter(adapter); 
      grid_list.setOnItemClickListener(new AdapterView.OnItemClickListener() { // list item click opens a new detailed activity 
       @Override 
       public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
        otherModel othermodel = result.get(position); 
        Bundle bundle = new Bundle(); 
        bundle.putString("otherModel",new Gson().toJson(othermodel)); 
        OtherDetail other = new OtherDetail(); 
        other.setArguments(bundle); 
        getActivity().getSupportFragmentManager().beginTransaction().replace(R.id.container,new OtherDetail()).addToBackStack(null).commit(); 
       } 

と私のフラグメントのJavaで私はgetArgumentを呼び出すようにしようと使用していますですデータ。

Bundle bundle = this.getArguments(); 
    if(bundle != null) { 
     String json = bundle.getString("otherModel"); // getting the model from MainActivity send via extras 
     otherModel otherModel = new Gson().fromJson(json, otherModel.class); 
} 
+0

アクティビティ・フラグメント通信については、[このリンク](https://developer.android.com/training/basics/fragments/communicating.html)を参照してください。 –

+0

なぜあなたは、putSerializable()を使ってバンドル内のotherModelのオブジェクトを渡さないのですか? –

答えて

0

トランザクションで「その他」を渡す必要があります。新しいフラグメントを作成する必要はありません。 トランザクションでフラグメントを作成するときは、引数なしでフラグメントを送信します。

+0

ありがとうございます!それは私のために働いている! – JsLaw

0

実際の問題は、あなたが別のオブジェクトに引数を設定して、トランザクションに渡すと異なっているので、あなたはotherに引数を設定した場合、その後の取引のために同じオブジェクトを渡し、簡単な言葉で両方に同じオブジェクトを渡す、です。

この行を以下のコードに置き換えてください。

getActivity().getSupportFragmentManager().beginTransaction().replace(R.id.container,other).addToBackStack(null).commit(); 
+0

ありがとうございます!それは私のために働いている! – JsLaw

関連する問題