2016-07-20 11 views
0

現在ギャラリーアプリのようなアプリに取り組んでいます。アプリはリソースフォルダからいくつかの画像を読み込む必要があり、ユーザーが画像を選択するとアプリは選択した画像を読み込み、ユーザーが画面をスライドさせるとアプリは次の画像または前の画像を読み込む必要があります。ギャラリーアプリでスライド

問題は、私が画像をクリックすると、アプリケーションは常に最初の画像を読み込むことです。私はそれを解決するint intetを使用しようとするが、プログラムは私にエラーを与える。

私はアンドロイドプログラミングではかなり新しいですが、申し訳ありませんが簡単な質問です。ここで

は、アプリのコードです:

主な活動:

package com.example.erasor.pruebaslide; 

import android.content.Intent; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 

public class MainActivity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 

public void Image1 (View view) { 
    Intent intent= new Intent(this, Slide.class); 
    startActivity(intent); 
} 

public void Image2 (View view) { 
    Intent intent = new Intent(this, Slide.class); 
    intent.putExtra("position", 2); 
    startActivity(intent); 
} 
} 

スライドアクティビティ:

package com.example.erasor.pruebaslide; 

import android.content.Context; 
import android.content.Intent; 
import android.support.v4.view.PagerAdapter; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.support.v4.app.FragmentPagerAdapter; 
import android.support.v4.view.ViewPager; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ImageView; 
import android.widget.RelativeLayout; 


public class Slide extends AppCompatActivity { 



private CustomPagerAdapter mCustomPagerAdapter; 


private ViewPager mViewPager; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_slide); 

    Intent intent = getIntent(); 
    int position = intent.getIntExtra("position", 0); 

    mCustomPagerAdapter = new CustomPagerAdapter(this); 

    mViewPager = (ViewPager) findViewById(R.id.container); 
    mViewPager.setAdapter(mCustomPagerAdapter); 

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

} 

int[] mResources = { 
     R.drawable.image1, 
     R.drawable.image2, 
     R.drawable.image3, 
     R.drawable.image4, 
}; 

class CustomPagerAdapter extends PagerAdapter { 

    Context mContext; 
    LayoutInflater mLayoutInflater; 

    public CustomPagerAdapter(Context context) { 
     mContext = context; 
     mLayoutInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 

    @Override 
    public int getCount() { 
     return mResources.length; 
    } 

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

    @Override 
    public Object instantiateItem(ViewGroup container, int position) { 
     View itemView = mLayoutInflater.inflate(R.layout.fragment_slide, container, false); 

     ImageView imageView = (ImageView) itemView.findViewById(R.id.image); 
     imageView.setImageResource(mResources[position]); 

     container.addView(itemView); 

     return itemView; 
    } 

    @Override 
    public void destroyItem(ViewGroup container, int position, Object object) { 
     container.removeView((RelativeLayout) object); 
    } 
} 
} 

答えて

0

私はあなたが言う一部が欠けていると思います表示する位置にあるmViewPagerを試してください:

mViewPager.setAdapter(mCustomPagerAdapter); 
mViewPager.setCurrentItem(position); 
+0

ありがとうございました! – Erasor

関連する問題