2

私はAndroid開発にかなり慣れていないので、他のアクティビティにリンクするボタンを備えたスライド式カルーセルを作成しようとしています.これは私がこれまでに持っているものです...

Main.java

public class MainActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //Remove title bar
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.activity_main);


    //Sliding Carousel controls
    MyPagerAdapter adapter = new MyPagerAdapter();
    ViewPager myPager = (ViewPager) findViewById(R.id.myfivepanelpager);
    myPager.setAdapter(adapter);
    myPager.setCurrentItem(1);



}   

//Sliding Carousel controls
class MyPagerAdapter extends PagerAdapter {
    public int getCount() {
        return 5;
    }
    public Object instantiateItem(View collection, int position) {
        LayoutInflater inflater = (LayoutInflater) collection.getContext()
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        int resId = 0;
        switch (position) {
        case 0:
            resId = R.layout.carousel_1;
            break;
        case 1:
            resId = R.layout.carousel_2;
            break;
        case 2:
            resId = R.layout.carousel_3;
            Button myButton = (Button) findViewById(R.id.paymybill);
            myButton.setOnClickListener(new View.OnClickListener() {
               public void onClick(View view) {
                   Intent intent = new Intent();
                   setResult(RESULT_OK, intent);
                   finish();
               }

            });
            break;





        case 3:
            resId = R.layout.carousel_4;
            break;
        case 4:
            resId = R.layout.carousel_5;
            break;
        }

        View view = inflater.inflate(resId, null);
        ((ViewPager) collection).addView(view, 0);
        return view;
    }

    @Override
    public void destroyItem(View arg0, int arg1, Object arg2) {
        ((ViewPager) arg0).removeView((View) arg2);
    }

    @Override
    public boolean isViewFromObject(View arg0, Object arg1) {
        return arg0 == ((View) arg1);
    }

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

現時点では、ケース 2 でボタンを機能させようとしています (ただし、最終的にはすべてのケースに 2 ~ 4 個のボタンがあります)。

エミュレーターにロードすると

                Button myButton = (Button) findViewById(R.id.paymybill);
            myButton.setOnClickListener(new View.OnClickListener() {
               public void onClick(View view) {
                   Intent intent = new Intent();
                   setResult(RESULT_OK, intent);
                   finish();
               }

            });
            break;

コメントアウトすると完全に機能しますが、含めるとロード時にクラッシュします。

問題は、ページャー ビューでボタンを正しく指していないことと、参照しているボタンやレイアウトが main_activity にないため、アプリがクラッシュしていることだと思います。

過去2日間、同様の問題を掘り下げましたが、何が間違っているのかわかりません。例として、このケース

v = inflater.inflate(R.layout.dashboard_media, null);

継ぎ目は同じ問題ですが、アダプターの別の実装を使用しており、何を交換できるか、何を交換できないかわかりません (試してみましたが、継ぎ目は何も機能しません)。そして、それは私が見逃している単純なものだと確信しています!

誰でも助けることができますか?

4

1 に答える 1