1

ViewPagerは正常に機能しますが、ViewPagerの画像の上にTexViewを追加しようとしているため、テキストはページャーに「添付」されています。
TexViewをうまく定義できますが、setText()を実行しようとすると、次の行にNullPointerExceptionが返されます。
score.setText("TEST");

これが私のアダプターのコードです:

  private 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.farleft;

            score = (TextView) findViewById(R.id.textView1);
            **EXCEPTION HERE**      score.setText("TEST");

            break;
        case 1:
            resId = R.layout.left;
            break;
        case 2:
            resId = R.layout.middle;
            break;
        case 3:
            resId = R.layout.right;
            break;
        case 4:
            resId = R.layout.farright;
            break;
        }

        View view = inflater.inflate(resId, null);
        view.setTag(position);

        view.setOnClickListener(new OnClickListener() {
            public void onClick(View view) {

                int position = (Integer) view.getTag();
                Log.v("Log_tag", "Here image is clicked" + position);

                if(position == 0){
                    Intent intent = new Intent(LogoQuizActivity.this,
                            LevelOne.class);
                    startActivity(intent);

                }

                if(position == 1){
                    Intent intent = new Intent(getBaseContext(),
                            LevelTwo.class);
                    startActivity(intent);
                }

                if(position == 2){
                    Intent intent = new Intent(getBaseContext(),
                            LevelThree.class);
                    startActivity(intent);
                }

                if(position == 3){
                    Intent intent = new Intent(getBaseContext(),
                            LevelFour.class);
                    startActivity(intent);
                }

                if(position == 4){
                    Intent intent = new Intent(getBaseContext(),
                            LevelFive.class);
                    startActivity(intent);
                }
            }
        });


        ((ViewPager) collection).addView(view, 0);

        return view;


    }
4

2 に答える 2

2

これを使って

View view = (View) inflater.inflate(R.layout.your_layout, null);

そして、次のようなテキストビューを見つけます

score = (TextView) view.findViewById(R.id.textView1);
score.setText("TEST");
于 2012-05-04T15:03:25.967 に答える
1

findViewById(R.id.textView1)を試す前に、レイアウトを膨らませていないようです

...
    View view = inflater.inflate(resId, null); // this comes first
    switch (position) {
    case 0:
        resId = R.layout.farleft;

        score = (TextView) view.findViewById(R.id.textView1);
        score.setText("TEST");

        break;
    case 1:
        resId = R.layout.left;
        break;
    case 2:
        resId = R.layout.middle;
        break;
    case 3:
        resId = R.layout.right;
        break;
    case 4:
        resId = R.layout.farright;
        break;
    }
...
于 2012-05-04T15:07:11.897 に答える