2017-10-19 93 views
-1

林顯示圖像試圖在這一代碼nature2nature4這就需要顯示在一個動態向Fragment顯示兩個圖像 - 第一影像nature2文本"Fragment"一起刷卡nature4文本"Fragment2"後。如何在這段代碼

代碼不顯示任何錯誤,但我所有的運行時,我得到的是文本"Fragment1",刷卡"Fragment2"等以後。

public class MainActivity extends AppCompatActivity { 

    private ViewPager viewPager; 

    private ArrayList<String> strs; 

    private FragmentPagerAdapter adapter; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Log.i("x", "onCreateActivity"); 


     // create an custom array list of your object class here which you can pass to pager adapter 
     strs = new ArrayList<String>(); 
     strs.add("Fragment 1"); 
     strs.add("Fragment 2"); 
     strs.add("Fragment 3"); 
     strs.add("Fragment 4"); 
     strs.add("Fragment 5"); 


     viewPager = (ViewPager) findViewById(R.id.pager); 

     adapter = new FragmentPagerAdapter(getSupportFragmentManager(), strs); 
     viewPager.setAdapter(adapter); 
    } 

    public class FragmentPagerAdapter extends FragmentStatePagerAdapter { 

     private ArrayList<String> itemData; 
     Fragment fragment; 
     int resId; 



     public FragmentPagerAdapter(FragmentManager fm, ArrayList<String> itemData) { 
      super(fm); 
      this.itemData = itemData; 

     } 

     @Override 
     public int getCount() { 
      return itemData.size(); 
     } 

     @Override 
     public void destroyItem(ViewGroup container, int position, Object object) { 
      super.destroyItem(container, position, object); 
      Log.i("x", "destroyItem"); 
     } 

     @Override 
     public Fragment getItem(int position) { 
      Log.i("x", "getItem"); 
      // pass data to fragment 
      String str = itemData.get(position); 
      if (position == 0) { 
       resId = R.drawable.nature2; 
      } else if (position == 1) { 
       resId = R.drawable.nature4; 
      } 
      fragment = Fragment1.newInstance(str, resId); 
      return fragment; 

     } 
    } 

} 

而且Fragment.class

public class Fragment1 extends Fragment { 

    public Fragment1(){} 

    String stringValue; 
    int imagesResId; 
    TextView textView; 

    private int [] images = {R.drawable.nature2,R.drawable.nature4}; 

    // static method to create the Fragment1 frag containing string 
    public static Fragment1 newInstance(String str, int imagesResId) 
    { 
     Fragment1 slider=new Fragment1(); 
     Bundle b=new Bundle(); 
     b.putString("stringValue", str); 
     b.putInt("images",imagesResId); 
     slider.setArguments(b); 
     return slider; 
    } 



    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     Log.i("x","onCreateViewFragment"); 

     View view = inflater.inflate(R.layout.fragment1, container, false); 
     textView = (TextView) view.findViewById(R.id.textView); 
     return view; 
    } 

    // you will get data in this method where you can set value to your views 
    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     Log.i("x","onActivityCreatedFragment"); 
     super.onActivityCreated(savedInstanceState); 
     stringValue = getArguments().getString("stringValue"); 
     textView.setText(stringValue); 



    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     Log.i("x","onCreateFragment"); 
     super.onCreate(savedInstanceState); 

     imagesResId = getArguments().getInt("images"); 
     stringValue = getArguments().getString("stringValue"); 

    } 
} 
+1

你知道如何讓ImageView顯示圖像資源嗎? – 0X0nosugar

+0

'ImageView imageResId =(ImageView)view.findViewById(image); imageResId.setImageResource(images [1]);'..但現在我得到的圖像無處不在。如何從[]中正確設置圖像? – MissAndroid

回答

0

試試這個:imageResId.setImageResource(imagesResId);

+0

謝謝你,太棒了:) – MissAndroid

+0

你好。你能看看這個帖子嗎?對於'onCreateView'和'if'語句實現布爾值有問題。 https://stackoverflow.com/questions/47062603/passing-different-images-every-second-fragment – MissAndroid

+0

你好!你能否投票接受這個被接受的答案?需要更多的特權才能賺取 – jibrahim

0

編寫代碼將onActivityCreated()轉換爲onCreateView或onViewCreated()。