【问题标题】:Stuck on Sliding between two activities卡在两个活动之间滑动
【发布时间】:2012-08-03 12:49:34
【问题描述】:

我坚持这个项目,试图在两个活动之间制作页面滑块。

  • 我只知道每个活动都是独立工作的,但是当我尝试将 PageAdapter 设置为滑动放置时:
  • 另外,我在 Manifest 中编写活动,在 Java 中从 XML 初始化所有变量,但问题正是在我为按钮设置 onClickListener 时开始的。

    LayoutInflater inflater = LayoutInflater.from(this); 列表页面 = 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);
    }
}

页面适配器:

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);

}

}

【问题讨论】:

  • 你把第一块代码放在哪里了?!哪个班?
  • 我将第一个代码块放在我的第一个活动中。在 makeAdditionalPageSlide 方法中

标签: java android adapter pager


【解决方案1】:

我的建议是使用 ViewPager 和 setContentView(R.layout.mainActivity) 的占位符制作 mainActivity.xml 布局

与您在 PageViewAdapter 中设置的页面视图内容相关的事情。

也许我不太明白你试图这样做的逻辑,但这似乎有点令人困惑..:S

【讨论】:

    猜你喜欢
    • 2013-08-18
    • 2015-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-03
    • 2012-06-08
    相关资源
    最近更新 更多