【问题标题】:Cannot set text in ViewPager无法在 ViewPager 中设置文本
【发布时间】:2012-05-04 14:46:09
【问题描述】:

我的 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;


    }

【问题讨论】:

  • 你能发布一个堆栈跟踪吗?你确定 textView1 已经膨胀了吗?
  • 我将如何扩充 textview?

标签: android adapter android-viewpager settext


【解决方案1】:

使用这个

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

并找到文本视图如

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

【讨论】:

  • 已排序。除了膨胀 textview 之外,我还必须将 farleft 的布局更改为相对布局,以便文本出现在 imageview 的顶部
【解决方案2】:

看起来您在尝试 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;
    }
...

【讨论】:

  • 已排序。除了膨胀 textview 之外,我还必须将 farleft 的布局更改为相对布局,以便文本出现在 imageview 的顶部
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多