2017-05-13 2 views
0

私の配列の画像uriを0の位置で他のフラグメントに渡したいと思います。 これはのpostlineでonclickメソッドを渡したいと思っています。です。私はそのデータを取得したい。このフラグメントで私の配列からのイメージURIを1つのフラグメントで宣言し、それを他のフラグメントに渡す方法は?

public class OrganicAcidFragment extends Fragment { 
     String[] product_name={"Formic Acid","Acetic Acid","Propionic Acid",}; 
     String[] product_cn={"CH2O2","CH3COOH","C3H602"}; 

     int[] images={R.drawable.formicacid,R.drawable.aceticacidjpg,R.drawable.propionicacid}; 
     ListView list; 
     String quantity; 
     String price; 
     FragmentManager fm; 
     @Nullable 
     @Override 
     public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) { 
      View rootview = inflater.inflate(R.layout.i_fragment_organic_acid, container, false); 
      fm=getFragmentManager(); 


      MyAdapter adapter=new MyAdapter(getActivity(),product_name,images,product_cn,quantity,price); 
      list.setAdapter(adapter); 
      list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

       @Override 
       public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
        if(position==0){ 

         PurchaseFragment ldf = new PurchaseFragment(); 
         Bundle args = new Bundle(); 
         args.putString("product_name", product_name[0]); 
         args.putString("product_cn", product_cn[0]); 
         ldf.setArguments(args); 
         getFragmentManager().beginTransaction().add(R.id.content_frame, ldf).commit(); 
        } 
        if(position==1){ 
         fm.beginTransaction().replace(R.id.content_frame,new OrganicBaseFragment()).addToBackStack("chemicalorganicfragment").commit(); 
        } 
        if(position==2){ 
         fm.beginTransaction().replace(R.id.content_frame,new OrganicBaseFragment()).addToBackStack("chemicalorganicfragment").commit(); 
        } 


       } 
     }); 
     return rootview; 
    } 
} 

public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) { 
      View rootview = inflater.inflate(R.layout.i_fragment_purchase, container, false); 

      String product_names = getArguments().getString("product_name"); 
      String product_cns = getArguments().getString("product_cn"); 


      imagee=(ImageView)rootview.findViewById(R.id.productimage); 
      cancel= (Button) rootview.findViewById(R.id.cancel); 
      address= (EditText) rootview.findViewById(R.id.address); 

      name.setText(product_names); 
      cn.setText("("+product_cns+")"); 




      return rootview; 
     } 

両方のフラグメントは、同じ活動です。

どうすればいいですか?

+0

http://stackoverflow.com/help/someone-answers、あなたはここで良い答え – RiggsFolly

答えて

0

私は、実行中のアクティビティとフラグメント間でデータを送信する最も簡単で簡単な方法はLocalBroadcastだと考えています。

Intent intent = new Intent("some_name"); 
intent.putExtra("some_data_key", "some_data_value"); 
LocalBroadcastManager.getInstance(getApplicationContext()).sendBroadcast(intent); 

ローカルブロードキャストを送信する方法です。

またはonCreateView((リスナーが活動の場合)(リスナーがフラグメントである場合)あなたは))(のonCreateにその放送を登録する必要がありますか、その放送を受信したい時はいつでもローカル放送を聞くために:

LocalBroadcastManager.getInstance(this/*here is context*/).registerReceiver(someReceiver, 
      new IntentFilter("some_name")); 

この

BroadcastReceiver someReceiver= new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     String data= intent.getStringExtra("some_data_key"); 
     //Here do whatever you want with data 
     //It isn't must be a string. If you want to send a object you must make object class implement Parcelable properly. 
    } 
}; 

最後に、このブロードキャスト受信機の登録を忘れないようにしてください。 onDestroy()でやってみよう。

+0

を受け入れるための評判ポイントを取得し、私は断片を使用しています..それはフラグメントからフラグメントへの送信に適用できますか? – harsh

+0

はい、そうです。 ReceiverフラグメントにBroadcastReceiver(someReceiver)を宣言し、onCreateView()でそれをすべて登録します。その後、あなたが望む場所からあなたのローカル放送を送ってください。どこからでもローカル放送を送っても大丈夫ですが、あなたはアクティビティと断片でしか受信できないと思います。たぶんあなたはサービスで受けることができますが、わかりません。 このサンプルはアクティビティ用ですが、フラグメントに対しても有効です:http://stackoverflow.com/questions/8802157/how-to-use-localbroadcastmanager –

+0

フラグメントでgetApplicationContext()を書くのですか? – harsh

0

bundleを使用して、あるフラグメントから別のフラグメントにデータを送信できます。

他の断片のonCreateView()で
//Put the value 
YourNewFragment ldf = new YourNewFragment(); 
Bundle args = new Bundle(); 
args.putString("YourKey", "YourValue"); 
ldf.setArguments(args); 

//Inflate the fragment 
getFragmentManager().beginTransaction().add(R.id.container, ldf).commit(); 

//Retrieve the value 
String value = getArguments().getString("YourKey"); 
+0

私はしようとしましたが、画像uri.howを送信しようとしていません。私の配列から画像uriを渡しますか? – harsh

+0

画像を渡そうとしています[]配列にはドロワーブルが含まれています...そうですか? –

+0

このリンクを確認してくださいそれはあなたが助けてくれることを願ってhttp://stackoverflow.com/a/8407644 –

関連する問題