2012-08-03 82 views
1

我堅持嘗試在兩個活動之間製作頁面滑塊的項目。卡住兩個活動之間滑動

  • 我所知道的每一個活動都獨立工作,但是當我嘗試建立PageAdapter滑動推杆:
  • 另外,我寫在清單活動,從Java的XML初始化所有變量,但問題始於我爲按鈕設置onClickListener的時刻。

    LayoutInflater inflater = LayoutInflater.from(this); List pages = new ArrayList();

    View page = inflater.inflate(R.layout.photo, null); 
    pages.add(page); 
    page = inflater.inflate(R.layout.cameragrid, null); 
    pages.add(page); 
    
    CameraPagerAdapter pagerAdapter = new CameraPagerAdapter(pages); 
    ViewPager viewPager = new ViewPager(this); 
    viewPager.setAdapter(pagerAdapter); 
    viewPager.setCurrentItem(0); //view being shown firstly 
    
    setContentView(viewPager); 
    

    而不是*setContentView(R.layout.photo);*它不會啓動。 我錯過了什麼?感謝您的提前。

第一活動:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    makeAdditionalPageSlide(); //>>> problems started here 

    initialize(); 

    InputStream is = getResources().openRawResource(R.drawable.dinam); 
    bmp = BitmapFactory.decodeStream(is); 
} 
public void makeAdditionalPageSlide(){ 
    LayoutInflater inflater = LayoutInflater.from(this); 
    List<View> pages = new ArrayList<View>(); 

    View page = inflater.inflate(R.layout.photo, null); 
    pages.add(page); 
    page = inflater.inflate(R.layout.cameragrid, null); 
    pages.add(page); 

    CameraPagerAdapter pagerAdapter = new CameraPagerAdapter(pages); 
    ViewPager viewPager = new ViewPager(this); 
    viewPager.setAdapter(pagerAdapter); 
    viewPager.setCurrentItem(0); //view being shown firstly 

    setContentView(viewPager); 


} 

private void initialize() { 
    // TODO Auto-generated method stub 
    iv = (ImageView) findViewById (R.id.ivReturnedPic); 
    ib = (ImageButton) findViewById (R.id.ibTakePic); 
    b = (Button) findViewById(R.id.bSetWall); 
    b.setOnClickListener(this); 
    ib.setOnClickListener(this); 
} 
public void onClick(View v) { 
    // TODO Auto-generated method stub 
    switch (v.getId()){ 
    case R.id.bSetWall: 
     try { 
      getApplicationContext().setWallpaper(bmp); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     break; 
    case R.id.ibTakePic: 
     i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
     startActivityForResult(i, cameraData); 
    break; 
    } 
} 
@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    // TODO Auto-generated method stub 
    super.onActivityResult(requestCode, resultCode, data); 
    if (resultCode == RESULT_OK){ 
     Bundle extras = data.getExtras(); 
     bmp = (Bitmap) extras.get("data"); 
     iv.setImageBitmap(bmp); 
    } 
} 

PageAdapter:

public class CameraPagerAdapter extends PagerAdapter { 
List<View> pages = null; 

    public CameraPagerAdapter(List<View> pages){ 
     this.pages = pages; 
    } 

    @Override 
    public Object instantiateItem(View collection, int position){ 
     View v = pages.get(position); 
     ((ViewPager) collection).addView(v, 0); 
     return v; 
    } 

    @Override 
    public void destroyItem(View collection, int position, Object view){ 
     ((ViewPager) collection).removeView((View) view); 
    } 

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

    @Override 
    public boolean isViewFromObject(View view, Object object){ 
     return view.equals(object); 
    } 

    @Override 
    public void finishUpdate(View arg0){ 
    } 

    @Override 
    public void restoreState(Parcelable arg0, ClassLoader arg1){ 
    } 

    @Override 
    public Parcelable saveState(){ 
     return null; 
    } 

    @Override 
    public void startUpdate(View arg0){ 
    } 

} 第二活動:

public class CameraGrid extends Activity implements OnItemClickListener{ 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.cameragrid); 
    GridView gv = (GridView) findViewById(R.id.cameragrid); 
    CameraImageAdapter ia = new CameraImageAdapter(getApplicationContext()); 
    gv.setAdapter(ia); 
    //gridview.setOnItemClickListener(this); 
    gv.setOnItemClickListener(this); 
} 

public void onItemClick(AdapterView<?> arg0, View iv, int position, long id) { 
    // TODO Auto-generated method stub 
    Toast.makeText(getApplicationContext(), ""+position, Toast.LENGTH_LONG).show(); 

    Intent i = new Intent(getApplicationContext(),CameraImageDetails.class); 
    i.putExtra("id", position); 
    startActivity(i); 

} 

}

+0

你在哪裏把第一塊代碼?哪一堂課? – Ewoks 2012-08-03 13:18:01

+0

我把第一塊代碼放在我的第一個活動中。在一個方法** makeAdditionalPageSlide ** – Andrew 2012-08-03 13:33:09

回答

0

我的建議是讓mainActivity.xml佈局佔位ViewPager和的setContentView(R.layout.mainActivity)

關係到PageViewAdapter頁面視圖U設置的內容的東西。

也許我不太明白邏輯你試圖做到這一點,但它似乎有點混亂..:S