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 回答