2017-10-04 10 views
0

私は、セッターメソッドとゲッターメソッドを含むクラス製品を持っています。 ThirdActivityで私は画像の配列のリストを持っており、それらを断片的に取り出したいと思っています。フラグメント内のgetIntentが私と一緒に動作しません

ImageView img2; 
Bundle b=getIntent().getExtras(); 

     int image =b.getInt("Big Image"); 
     img2.setImageResource(image); 

ThirdActivity

AdapterView.OnItemClickListener onItemClick = new 
      AdapterView.OnItemClickListener() { 
       @Override 
       public void onItemClick(AdapterView<?> parent, View view, int position, 
             long id) { 
        //Do any thing when user click to item 

        Intent i= new Intent(getApplicationContext(),FragmentOne.class); 
        Bundle b= new Bundle(); 

        b.putInt("Big Image",productList2.get(position).getFragment1()); 
        b.putInt("Big Image",productList2.get(position).getFragment2()); 
        b.putInt("Big Image",productList2.get(position).getFragment3()); 
        b.putInt("Big Image",productList2.get(position).getFragment4()); 

        i.putExtras(b); 
        startActivity(i); 


       } 

      }; 

FragmentOneが、私はFragmentOneのメソッドgetIntentを()を解決することはできません取得します。 私もBundle b=getActivity().getIntent().getExtras().getString("Big Image");を試しても動作しません。

+0

getIntentはフラグメント内では機能しません。この値をアクティビティからフラグメントに渡す必要があります –

答えて

0

Intentで新しいフラグメントを開くことはできません。フラグメントは常にアクティビティによってホストされ、必要なときには膨らませる必要があります。

だけと呼ばれている理由です、新たな活動を開始する意図:、(バンドル付き)の意図は、あなたのフラグメントで受信されていない理由ですそれ

startActivity() // Start a new Activity 

はそれが役に立てば幸い、

0

あなたのフラグメントをホストするあなたのアクティビティにインテントを入れ、newInstance関数を使ってフラグメント化したいデータを渡す方が良いでしょう。あなたの活動で :

Bundle b=getIntent().getExtras(); 
int image =b.getInt("Big Image"); 
img2.setImageResource(image); 
FragmentTransaction transaction = 
getSupportFragmentManager().beginTransaction(); 
transaction.replace(R.id.flContent, yourFragment.newInstance(image)).commit(); 
0

は、フラグメントののnewInstance機能に値を渡します。

public static String IMAGE = "imagepath"; 
public static FragmentOne newInstance(String image) { 
     FragmentOne frag = new FragmentOne(); 
     Bundle bundle = new Bundle(); 
     bundle.putString(IMAGE, image); 
     frag.setArguments(bundle); 
     return frag; 
} 

およびonCreateフラグメントのこの値を得る。

String image = getArguments().getString(IMAGE); 

と活動の

FragmentOne.newInstance("Any string"); //this will create new instance of fragment. 
0

これは新しい番号と同じ「ビッグ画像」パラメータをオーバーライドするようFragmentOne活動は最後のIntになるだろううまくいく場合でも、まず第一に。

リストを渡してから、FragmentOneで取得してみます。その後、文字列名をFragmentsにバインドするメソッドを作成できます。

これが役に立ちます。

関連する問題